<?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>162309</bug_id>
          
          <creation_ts>2016-09-20 11:26:45 -0700</creation_ts>
          <short_desc>MarkedBlock should know what objects are live during marking</short_desc>
          <delta_ts>2016-10-12 19:11:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>162310</dependson>
    
    <dependson>162842</dependson>
          <blocked>149432</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1231804</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 11:26:45 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235627</commentid>
    <comment_count>1</comment_count>
      <attachid>290437</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-01 10:47:16 -0700</bug_when>
    <thetext>Created attachment 290437
it&apos;s a start</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235666</commentid>
    <comment_count>2</comment_count>
      <attachid>290452</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-01 17:26:01 -0700</bug_when>
    <thetext>Created attachment 290452
looks pretty close</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235679</commentid>
    <comment_count>3</comment_count>
      <attachid>290456</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-01 18:09:07 -0700</bug_when>
    <thetext>Created attachment 290456
might be done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235756</commentid>
    <comment_count>4</comment_count>
      <attachid>290477</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-02 19:55:30 -0700</bug_when>
    <thetext>Created attachment 290477
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235757</commentid>
    <comment_count>5</comment_count>
      <attachid>290478</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-02 20:15:31 -0700</bug_when>
    <thetext>Created attachment 290478
it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235844</commentid>
    <comment_count>6</comment_count>
      <attachid>290502</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 12:10:27 -0700</bug_when>
    <thetext>Created attachment 290502
it seems to run simple programs without crashing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235935</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 14:59:56 -0700</bug_when>
    <thetext>This crashes on splay during the second GC.  I need to do carnage to CodeBlockSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235936</commentid>
    <comment_count>8</comment_count>
      <attachid>290526</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 15:03:44 -0700</bug_when>
    <thetext>Created attachment 290526
it can run splay without crashing

Wow!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235997</commentid>
    <comment_count>9</comment_count>
      <attachid>290538</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 17:09:58 -0700</bug_when>
    <thetext>Created attachment 290538
passes tests

I still need to gather perf data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236009</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 17:47:10 -0700</bug_when>
    <thetext>Perf looks pretty good!  I&apos;ll run browser benchmarks next.


Benchmark report for SunSpider, LongSpider, Octane, Kraken, and AsmBench on murderface (MacBookPro11,5).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r206755)
&quot;Things&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r206755)

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                   Things                                      
SunSpider:
   3d-cube                                    4.7598+-0.1405     ?      4.8667+-0.2664        ? might be 1.0225x slower
   3d-morph                                   4.6804+-0.0819     ?      4.6835+-0.0481        ?
   3d-raytrace                                4.7986+-0.1959     ?      4.8248+-0.1859        ?
   access-binary-trees                        2.1087+-0.2056            1.9962+-0.0779          might be 1.0564x faster
   access-fannkuch                            4.8807+-0.1860            4.8249+-0.1278          might be 1.0116x faster
   access-nbody                               2.4643+-0.1026            2.3922+-0.0495          might be 1.0301x faster
   access-nsieve                              3.1765+-0.0274     ?      3.2465+-0.0844        ? might be 1.0220x slower
   bitops-3bit-bits-in-byte                   1.0927+-0.0281            1.0918+-0.0308        
   bitops-bits-in-byte                        2.6825+-0.0295     ?      2.7149+-0.0480        ? might be 1.0121x slower
   bitops-bitwise-and                         1.9481+-0.0490     ?      1.9744+-0.0821        ? might be 1.0135x slower
   bitops-nsieve-bits                         2.9989+-0.0317            2.9987+-0.0151        
   controlflow-recursive                      2.3278+-0.1394            2.2805+-0.0352          might be 1.0207x faster
   crypto-aes                                 4.2656+-0.1250     ?      4.2810+-0.1564        ?
   crypto-md5                                 2.6939+-0.1401            2.5977+-0.0554          might be 1.0370x faster
   crypto-sha1                                2.6480+-0.0578     ?      2.7426+-0.1215        ? might be 1.0357x slower
   date-format-tofte                          6.5634+-0.0371     ?      6.6671+-0.2436        ? might be 1.0158x slower
   date-format-xparb                          4.4092+-0.0485     ?      4.5115+-0.1514        ? might be 1.0232x slower
   math-cordic                                2.7159+-0.0757            2.6758+-0.1109          might be 1.0150x faster
   math-partial-sums                          3.8538+-0.0760     ?      3.8570+-0.0633        ?
   math-spectral-norm                         1.9476+-0.0290            1.9388+-0.0289        
   regexp-dna                                 6.4481+-0.3728            6.0793+-0.1339          might be 1.0607x faster
   string-base64                              4.5570+-0.1821            4.4215+-0.0251          might be 1.0307x faster
   string-fasta                               5.4202+-0.2102            5.3374+-0.0631          might be 1.0155x faster
   string-tagcloud                            8.0917+-0.4335            7.9968+-0.0990          might be 1.0119x faster
   string-unpack-code                        18.5043+-0.7824           18.3719+-0.6089        
   string-validate-input                      4.2391+-0.1710     ?      4.2530+-0.1024        ?

   &lt;arithmetic&gt;                               4.3953+-0.0459            4.3702+-0.0314          might be 1.0057x faster

                                                TipOfTree                   Things                                      
LongSpider:
   3d-cube                                  784.9753+-9.2362     ?    784.9796+-7.2979        ?
   3d-morph                                 564.4469+-1.8892          564.3682+-3.1053        
   3d-raytrace                              452.3591+-3.3894     ?    452.5263+-3.2539        ?
   access-binary-trees                      775.1539+-4.2585     !    785.4648+-4.5978        ! definitely 1.0133x slower
   access-fannkuch                          229.8188+-2.8471     ?    231.8483+-6.6854        ?
   access-nbody                             501.6161+-2.1568     ?    505.2909+-5.6832        ?
   access-nsieve                            280.6295+-6.1650     ?    286.2854+-7.0494        ? might be 1.0202x slower
   bitops-3bit-bits-in-byte                  31.3121+-0.3761     ?     31.7073+-0.8497        ? might be 1.0126x slower
   bitops-bits-in-byte                       82.5584+-1.8129           82.1645+-1.4429        
   bitops-nsieve-bits                       375.3969+-7.2505     ?    377.4139+-5.5289        ?
   controlflow-recursive                    430.0355+-3.4339          428.6742+-1.2196        
   crypto-aes                               531.1279+-2.0121          529.3739+-3.8091        
   crypto-md5                               454.5531+-2.4910     ?    455.7840+-4.5393        ?
   crypto-sha1                              591.1619+-4.8358     !    605.2210+-5.5402        ! definitely 1.0238x slower
   date-format-tofte                        329.8180+-4.8883     ?    335.7514+-6.1675        ? might be 1.0180x slower
   date-format-xparb                        611.0077+-3.1081     !    646.9916+-30.9931       ! definitely 1.0589x slower
   hash-map                                 135.6740+-2.8968     ?    139.2200+-2.9138        ? might be 1.0261x slower
   math-cordic                              425.7973+-9.6438          417.1100+-9.3656          might be 1.0208x faster
   math-partial-sums                        283.5224+-3.9142     ?    285.3476+-1.8994        ?
   math-spectral-norm                       516.9096+-2.5078     ?    518.4771+-2.2593        ?
   string-base64                            480.0868+-2.3306          478.7450+-2.1636        
   string-fasta                             328.3009+-0.9268     ?    331.9004+-4.4371        ? might be 1.0110x slower
   string-tagcloud                          163.9715+-1.4029          163.9625+-1.6930        

   &lt;geometric&gt;                              336.4531+-0.7115     !    339.0557+-1.3763        ! definitely 1.0077x slower

                                                TipOfTree                   Things                                      
Octane:
   encrypt                                   0.14959+-0.00209    ?     0.15031+-0.00311       ?
   decrypt                                   2.72169+-0.01214          2.70828+-0.00985       
   deltablue                        x2       0.11700+-0.00141    ?     0.11757+-0.00108       ?
   earley                                    0.23785+-0.00106          0.23764+-0.00140       
   boyer                                     4.12999+-0.06310    ?     4.14662+-0.05801       ?
   navier-stokes                    x2       4.61573+-0.01927          4.61221+-0.00971       
   raytrace                         x2       0.65478+-0.00466    ?     0.65531+-0.00276       ?
   richards                         x2       0.07932+-0.00136          0.07838+-0.00088         might be 1.0120x faster
   splay                            x2       0.31519+-0.00284          0.31218+-0.00247       
   regexp                           x2      15.85437+-0.26740    ?    15.93102+-0.59643       ?
   pdfjs                            x2      38.82551+-0.33882    ?    38.99885+-0.18927       ?
   mandreel                         x2      39.59546+-0.27219         39.59124+-0.29396       
   gbemu                            x2      28.72420+-0.27889    ?    28.74073+-0.10597       ?
   closure                                   0.47185+-0.00337          0.46830+-0.00230       
   jquery                                    6.43143+-0.03022          6.39458+-0.01449       
   box2d                            x2       8.71967+-0.05439    ?     8.72430+-0.05734       ?
   zlib                             x2     336.48324+-5.68523    ?   336.49135+-5.35980       ?
   typescript                       x2     604.82722+-10.05660   ?   610.12378+-5.38330       ?

   &lt;geometric&gt;                               4.70041+-0.01119          4.69945+-0.01477         might be 1.0002x faster

                                                TipOfTree                   Things                                      
Kraken:
   ai-astar                                   90.062+-2.375             88.968+-1.726           might be 1.0123x faster
   audio-beat-detection                       36.031+-0.871             35.823+-0.582         
   audio-dft                                  95.067+-1.552             94.269+-0.742         
   audio-fft                                  27.691+-0.684      ?      27.695+-0.851         ?
   audio-oscillator                           42.905+-0.296      ?      43.279+-1.073         ?
   imaging-darkroom                           57.087+-0.377             56.879+-0.328         
   imaging-desaturate                         41.833+-0.868      ?      42.040+-0.664         ?
   imaging-gaussian-blur                      59.686+-2.614             59.220+-2.165         
   json-parse-financial                       31.907+-1.183      ?      32.017+-0.471         ?
   json-stringify-tinderbox                   21.679+-0.925             20.965+-0.751           might be 1.0341x faster
   stanford-crypto-aes                        34.679+-1.212             34.222+-0.148           might be 1.0133x faster
   stanford-crypto-ccm                        32.347+-1.444      ?      32.987+-2.118         ? might be 1.0198x slower
   stanford-crypto-pbkdf2                     89.092+-0.363      ?      89.867+-1.349         ?
   stanford-crypto-sha256-iterative           29.307+-0.218             29.123+-0.197         

   &lt;arithmetic&gt;                               49.241+-0.279             49.097+-0.314           might be 1.0029x faster

                                                TipOfTree                   Things                                      
AsmBench:
   bigfib.cpp                               405.1739+-2.6410          404.2104+-1.9409        
   cray.c                                   357.2352+-2.9135     ?    357.2662+-2.7586        ?
   dry.c                                    395.2482+-4.1978     ?    414.1439+-42.2403       ? might be 1.0478x slower
   FloatMM.c                                665.1913+-13.4518    ?    673.4448+-4.6110        ? might be 1.0124x slower
   gcc-loops.cpp                           3379.0649+-9.6737     ?   3380.4471+-8.8589        ?
   n-body.c                                 748.3112+-3.9571          746.5452+-2.4560        
   Quicksort.c                              379.4353+-4.1063          377.0033+-2.7371        
   stepanov_container.cpp                  3168.5075+-22.4127    ?   3185.6080+-20.5172       ?
   Towers.c                                 237.2488+-3.8634     ?    239.0891+-4.0924        ?

   &lt;geometric&gt;                              670.5841+-1.4917     ?    674.7199+-7.3719        ? might be 1.0062x slower

                                                TipOfTree                   Things                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           47.0064+-0.1481     ?     47.0528+-0.1442        ? might be 1.0010x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236021</commentid>
    <comment_count>11</comment_count>
      <attachid>290545</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 18:31:33 -0700</bug_when>
    <thetext>Created attachment 290545
the ptach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236046</commentid>
    <comment_count>12</comment_count>
      <attachid>290556</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 19:45:24 -0700</bug_when>
    <thetext>Created attachment 290556
the patch

Further improved the handling of version wrap-around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236192</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 08:39:27 -0700</bug_when>
    <thetext>This is a 0.35% PLT regression with 84% confidence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236196</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 08:56:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; This is a 0.35% PLT regression with 84% confidence.

Or it could be a 0.9% PLT regression with 99% confidence.  The previous result had four runs of baseline and three runs of this patch.  I had forgotten the extra run.  After doing that, I got a result that was significantly slower, which throws the result a lot.

Anyway, I have some ideas for how to make this cheaper.  I&apos;ll try them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236274</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 11:18:07 -0700</bug_when>
    <thetext>Latest perf.


Benchmark report for SunSpider, LongSpider, Octane, Kraken, and AsmBench on pizlo (MacPro5,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r206755)
&quot;Things&quot; at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r206755)

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                   Things                                      
SunSpider:
   3d-cube                                    8.0235+-0.3621     ?      8.3052+-0.2384        ? might be 1.0351x slower
   3d-morph                                   8.1279+-0.1226     ?      8.1917+-0.0854        ?
   3d-raytrace                                8.4992+-0.2040            8.4723+-0.1616        
   access-binary-trees                        3.1203+-0.1078            3.0816+-0.1068          might be 1.0125x faster
   access-fannkuch                            8.5027+-0.2279            8.4424+-0.3140        
   access-nbody                               4.4228+-0.0787            4.3797+-0.1055        
   access-nsieve                              4.8087+-0.1750            4.7793+-0.1374        
   bitops-3bit-bits-in-byte                   1.7660+-0.0822            1.7055+-0.0541          might be 1.0355x faster
   bitops-bits-in-byte                        5.3679+-0.1043     ?      5.4113+-0.0835        ?
   bitops-bitwise-and                         2.8738+-0.0478     ?      2.8918+-0.1019        ?
   bitops-nsieve-bits                         4.7063+-0.0625     ?      4.7643+-0.0575        ? might be 1.0123x slower
   controlflow-recursive                      3.5873+-0.0647            3.5592+-0.0620        
   crypto-aes                                 7.0385+-0.1865            6.9646+-0.1515          might be 1.0106x faster
   crypto-md5                                 4.4600+-0.1392            4.3811+-0.1328          might be 1.0180x faster
   crypto-sha1                                4.5745+-0.0961            4.5502+-0.0736        
   date-format-tofte                         13.4292+-0.3363     ?     13.4452+-0.3493        ?
   date-format-xparb                          7.5737+-0.1182     ?      7.5955+-0.1118        ?
   math-cordic                                4.1582+-0.0785     ?      4.1888+-0.0811        ?
   math-partial-sums                          8.9864+-0.1432            8.9397+-0.1546        
   math-spectral-norm                         3.2642+-0.0827            3.1665+-0.0496          might be 1.0308x faster
   regexp-dna                                10.3010+-0.1137     ?     10.3179+-0.2243        ?
   string-base64                              6.9089+-0.1414     ?      7.1008+-0.1023        ? might be 1.0278x slower
   string-fasta                               9.1714+-0.1150     ?      9.2841+-0.1289        ? might be 1.0123x slower
   string-tagcloud                           13.4654+-0.2029           13.2572+-0.3336          might be 1.0157x faster
   string-unpack-code                        26.7415+-0.3726     ?     27.5089+-2.1735        ? might be 1.0287x slower
   string-validate-input                      6.5980+-0.0956            6.5756+-0.0805        

   &lt;arithmetic&gt;                               7.3260+-0.0301     ?      7.3562+-0.0951        ? might be 1.0041x slower

                                                TipOfTree                   Things                                      
LongSpider:
   3d-cube                                 1202.1618+-4.3588     ?   1211.1989+-5.4097        ?
   3d-morph                                1051.7163+-3.1291     ?   1054.7417+-3.7847        ?
   3d-raytrace                              846.1904+-5.0345     ^    832.9858+-4.0975        ^ definitely 1.0159x faster
   access-binary-trees                     1311.1012+-12.4107    ?   1314.3566+-6.3766        ?
   access-fannkuch                          414.2702+-13.0253    ?    415.8683+-14.5161       ?
   access-nbody                            1008.3697+-7.5767         1005.0294+-0.5716        
   access-nsieve                            599.4214+-1.5117          598.0627+-1.2544        
   bitops-3bit-bits-in-byte                  44.0405+-0.0957           44.0119+-0.1087        
   bitops-bits-in-byte                      309.3904+-2.7643          309.1396+-2.1327        
   bitops-nsieve-bits                       604.6160+-4.7808          601.3614+-3.7744        
   controlflow-recursive                    806.7600+-0.3109     ?    807.5056+-0.8618        ?
   crypto-aes                               920.0754+-4.4205          915.6011+-2.0631        
   crypto-md5                               712.2925+-2.1893          711.7632+-3.3018        
   crypto-sha1                             1028.0490+-2.7507         1027.5773+-5.9827        
   date-format-tofte                        862.2874+-7.6796     ?    864.2536+-22.7555       ?
   date-format-xparb                        998.2711+-11.3190    ^    982.3115+-4.2447        ^ definitely 1.0162x faster
   hash-map                                 228.1379+-1.2474          226.8719+-3.0762        
   math-cordic                              621.2927+-4.5599     ?    621.8403+-3.9488        ?
   math-partial-sums                        903.6336+-1.2139     ?    904.6057+-1.4168        ?
   math-spectral-norm                      1045.8192+-0.5604         1045.7521+-0.4860        
   string-base64                            678.0794+-0.8927          676.1299+-2.2146        
   string-fasta                             581.9292+-6.6014          580.7636+-3.1994        
   string-tagcloud                          271.8647+-1.3777     ^    267.3205+-1.5961        ^ definitely 1.0170x faster

   &lt;geometric&gt;                              623.9462+-1.2138          622.4183+-1.5229          might be 1.0025x faster

                                                TipOfTree                   Things                                      
Octane:
   encrypt                                   0.27504+-0.00110    ?     0.27589+-0.00044       ?
   decrypt                                   5.12324+-0.05780          5.07856+-0.05851       
   deltablue                        x2       0.22472+-0.00984    ?     0.23279+-0.00854       ? might be 1.0359x slower
   earley                                    0.44779+-0.00160    !     0.45199+-0.00193       ! definitely 1.0094x slower
   boyer                                     8.05465+-0.02511    ?     8.06552+-0.06843       ?
   navier-stokes                    x2       6.45853+-0.00695    ?     6.45901+-0.00837       ?
   raytrace                         x2       1.24906+-0.01144    ?     1.25735+-0.01483       ?
   richards                         x2       0.14393+-0.00175          0.14353+-0.00138       
   splay                            x2       0.54480+-0.00167    ^     0.54039+-0.00215       ^ definitely 1.0081x faster
   regexp                           x2      28.43787+-0.26215         28.30601+-0.12242       
   pdfjs                            x2      65.02654+-0.34598         64.69731+-0.14130       
   mandreel                         x2      68.35391+-0.39557    ?    68.70450+-0.31458       ?
   gbemu                            x2      68.19290+-8.41274         64.05341+-6.80604         might be 1.0646x faster
   closure                                   0.80387+-0.00183    !     0.80849+-0.00150       ! definitely 1.0058x slower
   jquery                                   10.53694+-0.02784         10.48505+-0.02524       
   box2d                            x2      16.72151+-0.05996    ^    16.53741+-0.05892       ^ definitely 1.0111x faster
   zlib                             x2     554.40618+-11.52526       547.51534+-13.83813        might be 1.0126x faster
   typescript                       x2    1137.35742+-6.32767       1137.06296+-6.20274       

   &lt;geometric&gt;                               8.47498+-0.07318          8.44480+-0.04927         might be 1.0036x faster

                                                TipOfTree                   Things                                      
Kraken:
   ai-astar                                  140.903+-1.017      ?     141.470+-0.815         ?
   audio-beat-detection                       63.972+-0.343      ?      64.045+-0.229         ?
   audio-dft                                 128.646+-0.913      ?     128.777+-0.604         ?
   audio-fft                                  51.808+-0.344      ?      51.961+-0.237         ?
   audio-oscillator                           76.304+-0.174      ?      76.421+-0.220         ?
   imaging-darkroom                           96.350+-0.116             96.324+-0.168         
   imaging-desaturate                         90.894+-0.231             90.802+-0.179         
   imaging-gaussian-blur                     113.875+-4.287            109.129+-4.292           might be 1.0435x faster
   json-parse-financial                       60.357+-0.302      ^      59.852+-0.130         ^ definitely 1.0084x faster
   json-stringify-tinderbox                   39.800+-0.148             39.783+-0.103         
   stanford-crypto-aes                        62.260+-0.365             62.256+-0.849         
   stanford-crypto-ccm                        57.612+-2.688             57.002+-3.128           might be 1.0107x faster
   stanford-crypto-pbkdf2                    150.094+-4.087            147.819+-3.843           might be 1.0154x faster
   stanford-crypto-sha256-iterative           48.793+-0.273      ?      48.837+-0.499         ?

   &lt;arithmetic&gt;                               84.405+-0.523             83.891+-0.668           might be 1.0061x faster

                                                TipOfTree                   Things                                      
AsmBench:
   bigfib.cpp                               665.0508+-15.0276         662.8626+-11.7344       
   cray.c                                   597.5950+-1.8130          597.2118+-2.7995        
   dry.c                                    670.4390+-17.7186         657.1325+-16.6841         might be 1.0202x faster
   FloatMM.c                                945.2271+-32.7938         927.8857+-31.7631         might be 1.0187x faster
   gcc-loops.cpp                           6313.6921+-66.3733        6298.8269+-80.0661       
   n-body.c                                1555.4205+-25.1477        1532.9256+-33.8577         might be 1.0147x faster
   Quicksort.c                              606.6469+-3.7198     ?    608.5187+-5.4834        ?
   stepanov_container.cpp                  4480.0198+-11.9496    ?   4482.6665+-13.2934       ?
   Towers.c                                 375.6496+-0.4232     ?    376.2430+-4.4923        ?

   &lt;geometric&gt;                             1108.1300+-6.3161         1101.4505+-5.3150          might be 1.0061x faster

                                                TipOfTree                   Things                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                           81.6232+-0.2539           81.3925+-0.3046          might be 1.0028x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236275</commentid>
    <comment_count>16</comment_count>
      <attachid>290624</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 11:18:31 -0700</bug_when>
    <thetext>Created attachment 290624
the patch

Still running perf tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236329</commentid>
    <comment_count>17</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 13:06:22 -0700</bug_when>
    <thetext>On PLT, this looks like a 0.8% regression with 99% confidence, even after doing some things to try to reduce the overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236415</commentid>
    <comment_count>18</comment_count>
      <attachid>290624</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-04 15:51:31 -0700</bug_when>
    <thetext>Comment on attachment 290624
the patch

Attachment 290624 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/2220150

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236416</commentid>
    <comment_count>19</comment_count>
      <attachid>290658</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-10-04 15:51:38 -0700</bug_when>
    <thetext>Created attachment 290658
Archive of layout-test-results from ews117 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews117  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236523</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 20:13:52 -0700</bug_when>
    <thetext>I think that I fixed the debug failure locally.  I also think that I&apos;m experiencing some kind of flukes in my benchmark runs.  On the one hand, I&apos;m seeing a 1% regression on membuster.  But this regression appears entirely unaffected by the fact that we&apos;re allocating newlyAllocated more frequently, which is the only change in this patch that looks like it could affect memory usage.  The only other possibility is that conservative roots have become more conservative, but I don&apos;t think this could be the case, since we are going to great pains to ensure that the isLive() query returns the same thing during conservative scans now as it did before.  If this wasn&apos;t true - if isLive() returned true more often, for example - then this would manifest as a crash.  I&apos;m not seeing those (except in the last patch I uploaded - it was a separate goof and I fixed it).

So, I&apos;m going to dig into the membuster regression more, this time trying to prove that it is indeed a fluke.  Maybe I&apos;ll try to run it on some other machines or do some clean builds.

I should also say that the differences in membuster results between baseline and trunk and smaller than the differences I get between different runs of the same build, spaced out in time.  A few hours can make the same build use 5% more or less memory!  It&apos;s crazy!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236526</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-04 20:24:46 -0700</bug_when>
    <thetext>Actually, I can test putting the conservative scan at the beginning.  If this shows different memory overheads, then this would definitely take the focus off of newlyAllocated.

I should also say that I measured the amount of memory used by newlyAllocated relative to the amount of memory used by the heap&apos;s capacity. It looked like there were fewer than 1 bytes of newlyAllocated for every 1000 bytes of marked block. That&apos;s just not enough to explain the membuster regressions that I&apos;m seeing (0.7% and 1.2%, the 1.2% regression happening when I *reduced* the number of newlyAllocated allocations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236890</commentid>
    <comment_count>22</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-05 21:18:09 -0700</bug_when>
    <thetext>It looks likely that the membuster regression goes away if we do the stack scan before starting marking, rather than after.  That&apos;s very surprising.  I&apos;m going to do more tests to confirm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236908</commentid>
    <comment_count>23</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-05 23:25:55 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; It looks likely that the membuster regression goes away if we do the stack
&gt; scan before starting marking, rather than after.  That&apos;s very surprising. 
&gt; I&apos;m going to do more tests to confirm.

But, in that configuration, I also get a 1% PLT regression with 99% certainty.  So weird.  I&apos;m going to try some other hardware configurations I&apos;m going to run membuster some more to make sure that this isn&apos;t a fluke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237406</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-06 17:31:26 -0700</bug_when>
    <thetext>I&apos;m getting membuster neutrality and a smaller PLT regression if I simply inline newlyAllocated into Handle instead of allocating it on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237407</commentid>
    <comment_count>25</comment_count>
      <attachid>290875</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-06 17:31:57 -0700</bug_when>
    <thetext>Created attachment 290875
more</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237420</commentid>
    <comment_count>26</comment_count>
      <attachid>290880</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-06 18:11:25 -0700</bug_when>
    <thetext>Created attachment 290880
perf neutral, space neutral</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237687</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-07 11:22:11 -0700</bug_when>
    <thetext>I did more experiments.  With 10 samples of membuster for baseline and this patch, I get a 0.76% regression with 76% confidence.  I&apos;ll take that to mean it&apos;s neutral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237771</commentid>
    <comment_count>28</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-07 13:38:52 -0700</bug_when>
    <thetext>This still looks like a 0.96% PLT regression with 99% confidence.  I&apos;m going to profile more.  This regression makes no sense, since the only change here is to the GC and all other GC benchmarks are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238027</commentid>
    <comment_count>29</comment_count>
      <attachid>291030</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-08 16:30:47 -0700</bug_when>
    <thetext>Created attachment 291030
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239015</commentid>
    <comment_count>30</comment_count>
      <attachid>291030</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-11 14:31:25 -0700</bug_when>
    <thetext>Comment on attachment 291030
the patch

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

r=me

I think there might be a clearer way to handle the wrap-around situation.

&gt; Source/JavaScriptCore/heap/Heap.cpp:1214
&gt;  void Heap::writeBarrierCurrentlyExecutingCodeBlocks()
&gt;  {
&gt; -    m_codeBlocks-&gt;writeBarrierCurrentlyExecutingCodeBlocks(this);
&gt; +    m_codeBlocks-&gt;writeBarrierCurrentlyExecuting(this);
&gt; +}
&gt; +
&gt; +void Heap::clearCurrentlyExecutingCodeBlocks()
&gt; +{
&gt; +    m_codeBlocks-&gt;clearCurrentlyExecuting();
&gt;  }

These probably don&apos;t need to be functions.

&gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:57
&gt; +    , m_allocatedVersion(MarkedSpace::nullVersion)

I would call this m_newlyAllocatedVersion since it guards m_newlyAllocated.

Later, we should come up with a better name for m_newlyAllocated. Maybe m_liveAtGCStart or m_liveSnapshot. (I don&apos;t think m_newlyAllocated will include things allocated during GC, right? And of course, for now, we don&apos;t allocate during GC.)

&gt; Source/JavaScriptCore/heap/MarkedBlock.h:291
&gt; +    void setNeedsDestruction();

I would call this &quot;updateNeedsDestruction&quot; to distinguish from a setter.

&gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:49
&gt; +    // - We did ~2^32 collections and rotated the version back to null, so we needed to hard-reset
&gt; +    //   everything. If the marks had been stale, we would have cleared them. So, we can be sure that
&gt; +    //   any set mark bit reflects objects marked during last GC, i.e. &quot;live&quot; objects.

It would help if you mentioned the resetAllocated() function by name here. (I think that&apos;s what you&apos;re talking about.)

Is it really true that wrap-around can wrap-around back to null? I thought it wrapped around to firstVersion.

If possible, I&apos;d prefer to think in terms of some elements of state that are snapshotted at the start of GC, and then consulted later after the current GC has started to change some things. Is that possible here? This function almost amounts to the inverse of a snapshot of areMarksStale() at the start of GC. 

// True if areMarksStale() was true at the start of GC -- which means no object in this block was marked at the end of the last GC.
inline bool MarkedBlock:areMarksStaleSnapshot() // Or maybe areMarksStaleAtGCStart()
{
    return m_markingVersion == MarkedSpace::nullVersion || MarkedSpace::nextVersion(m_markingVersion) != markingVersion;
}

This changes the behavior of nullVersion slightly: now nullVersion says &quot;don&apos;t check m_marks&quot;. It&apos;s possible to think of nullVersion as having up-to-date m_marks -- in the sense that they tell the (all zero) truth -- but I think it&apos;s more instructive to call this state not up-to-date -- in the sense that the GC mark phase never got a shot at setting m_marks, and so we know they were logically zero regardless of their bit values. Put another way, I would like to be able to ASSERT(areMarksStale() || m_marks.count()).

&gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:52
&gt; +    // It would be absurd to use this method when not collecting, since this special &quot;one version
&gt; +    // back&quot; state only makes sense when we&apos;re in a concurrent collection and have to be
&gt; +    // conservative.

Can we assert we&apos;re collecting here?

&gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:495
&gt; +    if (UNLIKELY(nextVersion(m_allocatedVersion) == initialVersion)) {
&gt; +        forEachBlock(
&gt; +            [&amp;] (MarkedBlock::Handle* handle) {
&gt; +                handle-&gt;resetAllocated();
&gt; +            });
&gt; +    }

This is super subtle. I think you should mention in a comment how this is needed by marksConveyLivenessDuringMarking. And you should also describe the problem of marksConveyLivenessDuringMarking eventually becoming (incorrectly) true due to wrap-around.

Perhaps a clearer thing to do upon wrap-around is to reset all blocks to nullVersion at the start of a wrap-around GC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239024</commentid>
    <comment_count>31</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-11 14:59:09 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Comment on attachment 291030 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=291030&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; I think there might be a clearer way to handle the wrap-around situation.
&gt; 
&gt; &gt; Source/JavaScriptCore/heap/Heap.cpp:1214
&gt; &gt;  void Heap::writeBarrierCurrentlyExecutingCodeBlocks()
&gt; &gt;  {
&gt; &gt; -    m_codeBlocks-&gt;writeBarrierCurrentlyExecutingCodeBlocks(this);
&gt; &gt; +    m_codeBlocks-&gt;writeBarrierCurrentlyExecuting(this);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void Heap::clearCurrentlyExecutingCodeBlocks()
&gt; &gt; +{
&gt; &gt; +    m_codeBlocks-&gt;clearCurrentlyExecuting();
&gt; &gt;  }
&gt; 
&gt; These probably don&apos;t need to be functions.

Done.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlock.cpp:57
&gt; &gt; +    , m_allocatedVersion(MarkedSpace::nullVersion)
&gt; 
&gt; I would call this m_newlyAllocatedVersion since it guards m_newlyAllocated.

Done.

&gt; 
&gt; Later, we should come up with a better name for m_newlyAllocated. Maybe
&gt; m_liveAtGCStart or m_liveSnapshot. (I don&apos;t think m_newlyAllocated will
&gt; include things allocated during GC, right? And of course, for now, we don&apos;t
&gt; allocate during GC.)

No, we will set newlyAllocated during GC.  We will scan stack at the end of GC and during every GC fixpoint stop-the-world increment.  During that time, we will stopAllocating(), which will put things in newlyAllocated.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlock.h:291
&gt; &gt; +    void setNeedsDestruction();
&gt; 
&gt; I would call this &quot;updateNeedsDestruction&quot; to distinguish from a setter.

Done.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:49
&gt; &gt; +    // - We did ~2^32 collections and rotated the version back to null, so we needed to hard-reset
&gt; &gt; +    //   everything. If the marks had been stale, we would have cleared them. So, we can be sure that
&gt; &gt; +    //   any set mark bit reflects objects marked during last GC, i.e. &quot;live&quot; objects.
&gt; 
&gt; It would help if you mentioned the resetAllocated() function by name here.
&gt; (I think that&apos;s what you&apos;re talking about.)

No, that function is for newlyAllocatedVersion.

&gt; 
&gt; Is it really true that wrap-around can wrap-around back to null? I thought
&gt; it wrapped around to firstVersion.
&gt; 
&gt; If possible, I&apos;d prefer to think in terms of some elements of state that are
&gt; snapshotted at the start of GC, and then consulted later after the current
&gt; GC has started to change some things. Is that possible here? 

That&apos;s exactly what this code is trying to do.

&gt; This function
&gt; almost amounts to the inverse of a snapshot of areMarksStale() at the start
&gt; of GC. 
&gt; 
&gt; // True if areMarksStale() was true at the start of GC -- which means no
&gt; object in this block was marked at the end of the last GC.
&gt; inline bool MarkedBlock:areMarksStaleSnapshot() // Or maybe
&gt; areMarksStaleAtGCStart()
&gt; {
&gt;     return m_markingVersion == MarkedSpace::nullVersion ||
&gt; MarkedSpace::nextVersion(m_markingVersion) != markingVersion;
&gt; }
&gt; 
&gt; This changes the behavior of nullVersion slightly: now nullVersion says
&gt; &quot;don&apos;t check m_marks&quot;. It&apos;s possible to think of nullVersion as having
&gt; up-to-date m_marks -- in the sense that they tell the (all zero) truth --
&gt; but I think it&apos;s more instructive to call this state not up-to-date -- in
&gt; the sense that the GC mark phase never got a shot at setting m_marks, and so
&gt; we know they were logically zero regardless of their bit values. Put another
&gt; way, I would like to be able to ASSERT(areMarksStale() || m_marks.count()).

MarkedBlock::aboutToMarkSlow() needs to know what the mark bits were at the start of the GC.  Currently we achieve it like this:

1) If aboutToMarkSlow() sees a null marking version then the marks reflect the truth at start of GC.
2) If aboutToMarkSlow() sees a one-version-old version then the marks reflect the truth at the start of GC.
3) In all other cases, the marks should have been cleared, but hadn&apos;t been yet - so ignore their contents.

(1) arises when the MarkedBlock is null or if we had a wrap-around.  Before the wrap-around bumps the version, it makes sure that the marks are either clear or not depending on what their version had been just before the wrap-around happened.  Then it sets the version to null.  Then it can wrap the version around.

You&apos;re proposing a change to marksConveyLivenessDuringMarking(), but you haven&apos;t proposed a corresponding change to how aboutToMarkSlow() should use this to figure out if it should transfer the contents of marks into newlyAllocated or not.

I don&apos;t think that what you&apos;re proposing handles this corner case, so I&apos;ll keep my version for now.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:52
&gt; &gt; +    // It would be absurd to use this method when not collecting, since this special &quot;one version
&gt; &gt; +    // back&quot; state only makes sense when we&apos;re in a concurrent collection and have to be
&gt; &gt; +    // conservative.
&gt; 
&gt; Can we assert we&apos;re collecting here?

Done.

The new way to do this is MarkedSpace::isMarking(), which is more precise for this case.

&gt; 
&gt; &gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:495
&gt; &gt; +    if (UNLIKELY(nextVersion(m_allocatedVersion) == initialVersion)) {
&gt; &gt; +        forEachBlock(
&gt; &gt; +            [&amp;] (MarkedBlock::Handle* handle) {
&gt; &gt; +                handle-&gt;resetAllocated();
&gt; &gt; +            });
&gt; &gt; +    }
&gt; 
&gt; This is super subtle. I think you should mention in a comment how this is
&gt; needed by marksConveyLivenessDuringMarking. And you should also describe the
&gt; problem of marksConveyLivenessDuringMarking eventually becoming
&gt; (incorrectly) true due to wrap-around.

marksConveyLivenessDuringMarking() does not check the newlyAllocatedVersion.  It checks the markingVersion, which is different.  I don&apos;t think that this is code is needed by marksConveyLivenessDuringMarking(), which doesn&apos;t know that newlyAllocated is also versioned.

&gt; 
&gt; Perhaps a clearer thing to do upon wrap-around is to reset all blocks to
&gt; nullVersion at the start of a wrap-around GC?

But that&apos;s what resetAllocated() does already.  It sets the newlyAllocatedVersion to nullVersion.  It also clears newlyAllocated, but I think that&apos;s not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239053</commentid>
    <comment_count>32</comment_count>
      <attachid>291308</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-11 15:37:22 -0700</bug_when>
    <thetext>Created attachment 291308
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239078</commentid>
    <comment_count>33</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-11 16:25:57 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:49
&gt; &gt; &gt; +    // - We did ~2^32 collections and rotated the version back to null, so we needed to hard-reset
&gt; &gt; &gt; +    //   everything. If the marks had been stale, we would have cleared them. So, we can be sure that
&gt; &gt; &gt; +    //   any set mark bit reflects objects marked during last GC, i.e. &quot;live&quot; objects.
&gt; &gt; 
&gt; &gt; It would help if you mentioned the resetAllocated() function by name here.
&gt; &gt; (I think that&apos;s what you&apos;re talking about.)
&gt; 
&gt; No, that function is for newlyAllocatedVersion.

What function clears marks if stale upon wrap-around? That&apos;s the function I would point to here.

&gt; You&apos;re proposing a change to marksConveyLivenessDuringMarking(), but you
&gt; haven&apos;t proposed a corresponding change to how aboutToMarkSlow() should use
&gt; this to figure out if it should transfer the contents of marks into
&gt; newlyAllocated or not.

if (handle().allocator()-&gt;isAllocated(&amp;handle()) || areMarksStaleSnapshot())
    m_marks.clearAll();
else {
    // Transfer m_marks to m_newlyAllocated
    ...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239097</commentid>
    <comment_count>34</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-11 16:55:05 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/207179</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239108</commentid>
    <comment_count>35</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-11 17:18:33 -0700</bug_when>
    <thetext>A related observation:

If each GC took 1ms, you would need to GC continuously for (2^32 / 1000 / 60 / 60 / 24) = ~50 consecutive days before achieving wrap-around.

And of course nobody actually GCs continuously per 1ms, so the real-world worst case is probably more like one GC per 10s (2^32 / 6 / 60 / 24) = ~500,000 days.

Can we just RELEASE_ASSERT that doesn&apos;t happen?

The odds that the user will crash, navigate, quit, or install a software update before wrapping around seem to be effectively 100%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239135</commentid>
    <comment_count>36</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-11 19:18:06 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; A related observation:
&gt; 
&gt; If each GC took 1ms, you would need to GC continuously for (2^32 / 1000 / 60
&gt; / 60 / 24) = ~50 consecutive days before achieving wrap-around.

The shortest GC I see in earley is 227us.

&gt; 
&gt; And of course nobody actually GCs continuously per 1ms, so the real-world
&gt; worst case is probably more like one GC per 10s (2^32 / 6 / 60 / 24) =
&gt; ~500,000 days.

Earley does 237 GCs in 2.689 seconds, so 88 GCs/sec.

You would need 2^32/88 seconds, so 48806446 seconds, or 564 days.

&gt; 
&gt; Can we just RELEASE_ASSERT that doesn&apos;t happen?
&gt; 
&gt; The odds that the user will crash, navigate, quit, or install a software
&gt; update before wrapping around seem to be effectively 100%.

Not 100%.  Someone could use JavaScriptCore to run a two-year compute task on their desktop.  I&apos;ve heard of two-year compute tasks, and I&apos;ve heard of two-year uptimes.

I would agree if handling the wrap-around was hard or untestable, and if I was confident that we never wanted the size of the version to be smaller.  The version stuff probably looks more confusing in patch form than it does when you just look at trunk.  I plan to add tests by having an option that forces the wrap-around to happen sooner, and run just earley and splay in that mode, for three seconds each (in my experience that catches &gt;95% of GC bugs).  Our GC would perform statistically as well if the versions were a byte, so if we ever needed space in Handle or MarkedBlock for any reason then these versions would be prime candidates; this would cause us to definitely need a wrap-around handler.  That&apos;s why when I reduced the version from 64-bit to 32-bit, I added the wrap-around fallback.  Sure &quot;nobody&quot; will need it, but if somebody does need it and we don&apos;t have it then I would feel bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239136</commentid>
    <comment_count>37</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-11 19:23:44 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt; &gt; &gt; Source/JavaScriptCore/heap/MarkedBlockInlines.h:49
&gt; &gt; &gt; &gt; +    // - We did ~2^32 collections and rotated the version back to null, so we needed to hard-reset
&gt; &gt; &gt; &gt; +    //   everything. If the marks had been stale, we would have cleared them. So, we can be sure that
&gt; &gt; &gt; &gt; +    //   any set mark bit reflects objects marked during last GC, i.e. &quot;live&quot; objects.
&gt; &gt; &gt; 
&gt; &gt; &gt; It would help if you mentioned the resetAllocated() function by name here.
&gt; &gt; &gt; (I think that&apos;s what you&apos;re talking about.)
&gt; &gt; 
&gt; &gt; No, that function is for newlyAllocatedVersion.
&gt; 
&gt; What function clears marks if stale upon wrap-around? That&apos;s the function I
&gt; would point to here.

Gotcha.  You meant resetMarks().

&gt; 
&gt; &gt; You&apos;re proposing a change to marksConveyLivenessDuringMarking(), but you
&gt; &gt; haven&apos;t proposed a corresponding change to how aboutToMarkSlow() should use
&gt; &gt; this to figure out if it should transfer the contents of marks into
&gt; &gt; newlyAllocated or not.
&gt; 
&gt; if (handle().allocator()-&gt;isAllocated(&amp;handle()) || areMarksStaleSnapshot())
&gt;     m_marks.clearAll();
&gt; else {
&gt;     // Transfer m_marks to m_newlyAllocated
&gt;     ...
&gt; }

Your areMarksStaleSnapshot is:

m_markingVersion == MarkedSpace::nullVersion || MarkedSpace::nextVersion(m_markingVersion) != markingVersion;

So, we would clear the marks on null version.  That&apos;s not correct for wrap-around, where the marks may have been the correct thing just prior to wrap-around.  See resetMarks():

void MarkedBlock::resetMarks()
{
    // We want aboutToMarkSlow() to see what the mark bits were after the last collection. It uses
    // the version number to distinguish between the marks having already been stale before
    // beginMarking(), or just stale now that beginMarking() bumped the version. If we have a version
    // wraparound, then we will call this method before resetting the version to null. When the
    // version is null, aboutToMarkSlow() will assume that the marks were not stale as of before
    // beginMarking(). Hence the need to whip the marks into shape.
    if (areMarksStale())
        m_marks.clearAll();
    m_markingVersion = MarkedSpace::nullVersion;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239405</commentid>
    <comment_count>38</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-12 11:55:29 -0700</bug_when>
    <thetext>&gt; Not 100%.  Someone could use JavaScriptCore to run a two-year compute task
&gt; on their desktop.  I&apos;ve heard of two-year compute tasks, and I&apos;ve heard of
&gt; two-year uptime.

You tried this with a benchmark bot and it literally melted the hardware.

Also, two-year compute tasks probably run on 64bit machines, so we could use &apos;long&apos; instead of uint32_t in order to accommodate them.

&gt; I would agree if handling the wrap-around was hard or untestable, and if I
&gt; was confident that we never wanted the size of the version to be smaller. 
&gt; The version stuff probably looks more confusing in patch form than it does
&gt; when you just look at trunk.  I plan to add tests by having an option that
&gt; forces the wrap-around to happen sooner, and run just earley and splay in
&gt; that mode, for three seconds each (in my experience that catches &gt;95% of GC
&gt; bugs).  Our GC would perform statistically as well if the versions were a
&gt; byte, so if we ever needed space in Handle or MarkedBlock for any reason
&gt; then these versions would be prime candidates; this would cause us to
&gt; definitely need a wrap-around handler.  That&apos;s why when I reduced the
&gt; version from 64-bit to 32-bit, I added the wrap-around fallback.  Sure
&gt; &quot;nobody&quot; will need it, but if somebody does need it and we don&apos;t have it
&gt; then I would feel bad.

These are some pretty hardcore theoretical arguments to justify real-world complexity that will impact all of our users and developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239411</commentid>
    <comment_count>39</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 12:08:00 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; &gt; Not 100%.  Someone could use JavaScriptCore to run a two-year compute task
&gt; &gt; on their desktop.  I&apos;ve heard of two-year compute tasks, and I&apos;ve heard of
&gt; &gt; two-year uptime.
&gt; 
&gt; You tried this with a benchmark bot and it literally melted the hardware.

It was a laptop, not a desktop.

&gt; 
&gt; Also, two-year compute tasks probably run on 64bit machines, so we could use
&gt; &apos;long&apos; instead of uint32_t in order to accommodate them.

You&apos;re right, we could make HeapVersion have different sizes depending on hardware.  That seems like a different kind of complexity.

&gt; 
&gt; &gt; I would agree if handling the wrap-around was hard or untestable, and if I
&gt; &gt; was confident that we never wanted the size of the version to be smaller. 
&gt; &gt; The version stuff probably looks more confusing in patch form than it does
&gt; &gt; when you just look at trunk.  I plan to add tests by having an option that
&gt; &gt; forces the wrap-around to happen sooner, and run just earley and splay in
&gt; &gt; that mode, for three seconds each (in my experience that catches &gt;95% of GC
&gt; &gt; bugs).  Our GC would perform statistically as well if the versions were a
&gt; &gt; byte, so if we ever needed space in Handle or MarkedBlock for any reason
&gt; &gt; then these versions would be prime candidates; this would cause us to
&gt; &gt; definitely need a wrap-around handler.  That&apos;s why when I reduced the
&gt; &gt; version from 64-bit to 32-bit, I added the wrap-around fallback.  Sure
&gt; &gt; &quot;nobody&quot; will need it, but if somebody does need it and we don&apos;t have it
&gt; &gt; then I would feel bad.
&gt; 
&gt; These are some pretty hardcore theoretical arguments to justify real-world
&gt; complexity that will impact all of our users and developers.

How will this complexity impact all of our users and developers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239433</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 12:40:44 -0700</bug_when>
    <thetext>Just to be clear, removal of the wraparound handler would reduce complexity as follows:

- Remove resetMarks().  The body of this method is three lines of code.
- Remove resetNewlyAllocated().  The body of this method is two lines of code.
- Remove marksConveyLivenessDuringMarking() and have aboutToMarkSlow() just check version directly.  The body of this method is three lines of code, including the line that has the non-wraparound version check (MarkedSpace::nextVersion(m_markingVersion) == markingVersion).
- Remove the loops that call resetMarks() and resetNewlyAllocated().  Those are six lines of code each using my style of lambda indentation and the surrounding if {}.

None of the code that handles the wraparound handler needs to be correct for when wraparound does not happen:
- resetMarks() won&apos;t be called.
- resetNewlyAllocated() won&apos;t be called.
- marksConveyLivenessDuringMarking() could return either true or false for nullVersion and everything would be fine.

I&apos;m not counting comments.  If we had no handling of wraparound, I would instead have a comment explaining why we can ignore wraparound.  We&apos;d still have most of the huge comment in marksConveyLivenessDuringMarking(); we&apos;d probably put it in aboutToMarkSlow().

So, the complexity being removed is 3 + 2 + 3 + 6 + 6 = 20 lines of code, all of which is live only when the bad thing happens.  That&apos;s quite small.

C programs can run for more than two years.  I want to be able to say that JS programs can also run for two years.  20 lines of code is a small price to pay for continuing our philosophy that JS programs shouldn&apos;t have to suffer unnecessary limitations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239636</commentid>
    <comment_count>41</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-12 19:11:41 -0700</bug_when>
    <thetext>As far as I can see, this landed without causing any regressions.  Hooray!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290437</attachid>
            <date>2016-10-01 10:47:16 -0700</date>
            <delta_ts>2016-10-01 17:26:01 -0700</delta_ts>
            <desc>it&apos;s a start</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>9936</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIwNjcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBo
ZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENv
bnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRWZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVy
c2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRC
bG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBAIC0yMDcsOCArMjA4LDExIEBAIEZyZWVM
aXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGUKIHRlbXBsYXRlPE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CiBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxs
b2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQp
Ci0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRl
c3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2Rl
KTsKKyAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkgeworICAgICAgICBpZiAobV9hbGxvY2F0ZWRW
ZXJzaW9uID09IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBk
ZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9k
ZSk7CisgICAgICAgIAorICAgIH0KICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1v
ZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVO
ZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKIH0KIApAQCAtMjk1LDEwICsyOTksMTEgQEAgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9yKCktPnNldElz
QWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CisgICAg
bV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFySGFzQW55QWxs
b2NhdGVkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IHZtKCktPmhlYXAub2Jq
ZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlBbGxv
Y2F0ZWQgPSBudWxscHRyOwogICAgIHN3ZWVwKCk7CiB9CiAKQEAgLTM0NiwyNCArMzUxLDQ0IEBA
IHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmUKIHsKICAgICBBU1NFUlQo
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvY2spOwotICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkgewot
ICAgICAgICBjbGVhck1hcmtzKG1hcmtpbmdWZXJzaW9uKTsKLSAgICAgICAgLy8gVGhpcyBtZWFu
cyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBibG9jay4K
LSAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5n
Tm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICBpZiAoIWFyZU1hcmtzU3RhbGUobWFya2lu
Z1ZlcnNpb24pKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5pc0FsbG9jYXRlZCgmaGFuZGxlKCkpCisgICAgICAgIHx8IE1hcmtlZFNwYWNlOjpu
ZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9uKSAhPSBtYXJraW5nVmVyc2lvbikgeworICAgICAg
ICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYmxvY2sgaXMgZnVsbCBhbmQgaXMgYWxyZWFk
eSByZWNvZ25pemVkIGFzIHN1Y2gsIG9yIHRoYXQgdGhlCisgICAgICAgIC8vIGJsb2NrIGRpZCBu
b3Qgc3Vydml2ZSB0aGUgcHJldmlvdXMgR0MuIFNvLCB3ZSBjYW4gY2xlYXIgbWFyayBiaXRzIHRo
ZSBvbGQgZmFzaGlvbmVkCisgICAgICAgIC8vIHdheS4gTm90ZSB0aGF0IGl0J3MgcG9zc2libGUg
Zm9yIHN1Y2ggYSBibG9jayB0byBoYXZlIG5ld2x5QWxsb2NhdGVkIHdpdGggYW4gdXAtdG8tCisg
ICAgICAgIC8vIGRhdGUgdmVyc2lvbiEgSWYgaXQgZG9lcywgdGhlbiB3ZSB3YW50IHRvIGxlYXZl
IHRoZSBuZXdseUFsbG9jYXRlZCBhbG9uZSwgc2luY2UgdGhhdAorICAgICAgICAvLyBtZWFucyB0
aGF0IHdlIGhhZCBhbGxvY2F0ZWQgaW4gdGhpcyBwcmV2aW91c2x5IGVtcHR5IGJsb2NrIGJ1dCBk
aWQgbm90IGZpbGwgaXQgdXAsIHNvCisgICAgICAgIC8vIHdlIGNyZWF0ZWQgYSBuZXdseUFsbG9j
YXRlZC4KKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIE9uZSB3YXkgb3IgYW5vdGhlciwgd2UnbGwgdXBkYXRlIG5ld2x5QWxsb2NhdGVkLgorICAg
ICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgaWYgKFdURjo6Qml0bWFwPGF0b21zUGVy
QmxvY2s+KiBuZXdseUFsbG9jYXRlZCA9IGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQuZ2V0KCkp
IHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAgICAgIGlmIChoYW5kbGUoKS5t
X2FsbG9jYXRlZFZlcnNpb24gPT0gYWxsb2NhdGVkVmVyc2lvbikgeworICAgICAgICAgICAgICAg
IC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBuZXdseUFsbG9jYXRlZC4gSWYg
d2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAgICAgICAgLy8gdGhlbiBkZWxl
dGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291
bnQgPSBuZXdseUFsbG9jYXRlZC0+bWVyZ2VBbmRDb3VudCgKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgY29udGVudHMgb2YgbmV3bHlBbGxvY2F0
ZWQgd2l0aCBtYXJrZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQgb2YKKyAgICAgICAgICAgICAg
ICAvLyBiaXRzIHRoZW4gZGVsZXRlIG5ld2x5QWxsb2NhdGVkIGFuZCBzZXQgYWxsb2NhdGVkLgor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ291bnQgdGhl
IG51bWJlciBvZiBzZXQgYml0cy4gSWYgaXQncyB0aGUgZnVsbCBzZXQsIHRoZW4gc2V0IGFsbG9j
YXRlZCBhbmQgY2xlYXIgdGhlCisgICAgICAgICAgICAvLyBiaXRzLiBJZiBub3QsIHRoZW4gYWxs
b2NhdGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNwbGF0IG1hcmtlZCBpbnRvIGl0IHdoaWxlIGNsZWFy
aW5nCisgICAgICAgICAgICAvLyBtYXJrZWQuCisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlKCku
bV9hbGxvY2F0ZWRWZXJzaW9uID0gYWxsb2NhdGVkVmVyc2lvbjsKICAgICB9Ci19Ci0KLXZvaWQg
TWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQotewotICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCkpOwotfQotCi12b2lkIE1hcmtlZEJsb2NrOjpj
bGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQotewotICAgIG1fbWFya3MuY2xl
YXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CiAgICAgbV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIAorICAg
IC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGlu
IHRoaXMgYmxvY2suCisgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNr
SXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjA2NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDEwICsxNDEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgc3RvcEFsbG9jYXRpbmcoY29uc3QgRnJlZUxpc3QmKTsKICAgICAgICAgRnJlZUxpc3QgcmVz
dW1lQWxsb2NhdGluZygpOyAvLyBDYWxsIHRoaXMgaWYgeW91IGNhbm9uaWNhbGl6ZWQgYSBibG9j
ayBmb3Igc29tZSBub24tY29sbGVjdGlvbiByZWxhdGVkIHB1cnBvc2UuCiAgICAgICAgICAgICAK
LSAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAg
d2FzIG5vbi1udWxsIAotICAgICAgICAvLyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFu
ZCBmYWxzZSBvdGhlcndpc2UuCi0gICAgICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwot
ICAgICAgICAgICAgCiAgICAgICAgIHNpemVfdCBjZWxsU2l6ZSgpOwogICAgICAgICBjb25zdCBB
bGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTY3LDcgKzE2Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZv
aWQgY2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBi
b29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2Nh
dGVkOyB9CisgICAgICAgIGlubGluZSBib29sIGlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0
OworICAgICAgICBpbmxpbmUgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNvbnN0OwogICAg
ICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25T
dGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29u
c3QgRnVuY3RvciYpOwpAQCAtMjM0LDYgKzIzMSw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFya2Vk
QWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IG1faW5k
ZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtT
ZXQgbV93ZWFrU2V0OworICAgICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRW
ZXJzaW9uOwogICAgICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVs
bHB0ciB9OwogICAgIH07CkBAIC0yOTUsOCArMjk0LDYgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBh
dG9tcygpOwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1h
cmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFy
a2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwpAQCAtNTQwLDE1ICs1Mzcs
NiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgbV9uZXds
eUFsbG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKLWlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGlm
IChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRy
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBp
bmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewogICAg
IHJldHVybiBtX2Jsb2NrLT5pc01hcmtlZChtYXJraW5nVmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3
bHlBbGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2
NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDE2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTGl2ZUMKICAgICByZXR1cm4gaXNMaXZlKG1hcmtpbmdWZXJzaW9uLCBzdGF0
aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKIH0KIAoraW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hbGxvY2F0ZWRWZXJzaW9uID09IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJz
aW9uKCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5
QWxsb2NhdGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgp
ICYmIG1fbmV3bHlBbGxvY2F0ZWQ7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgog
aW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNl
bGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA2NzA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAK
ICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2lu
Z1ZlcnNpb247IH0KKyAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VBbGxv
Y2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2Nh
dGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KQEAgLTIxNyw2
ICsyMTgsNyBAQCBwcml2YXRlOgogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIEhlYXBWZXJzaW9u
IG1fbWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OworICAgIEhlYXBWZXJzaW9uIG1f
YWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90IG1fY2FwYWNp
dHk7CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDIwNjcwNCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jp
dG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jJikg
Y29uc3Q7CiAgICAgCisgICAgc2l6ZV90IG1lcmdlQW5kQ291bnQoY29uc3QgQml0bWFwJik7Cisg
ICAgc2l6ZV90IHNldEFuZENvdW50KGNvbnN0IEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Qml0bWFwJikgY29uc3Q7CiAgICAgCkBAIC0yODcsNiArMjkwLDI0IEBAIGlubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKIH0KIAogdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om1lcmdl
QW5kQ291bnQoY29uc3QgQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgIHJlc3VsdCAr
PSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpdHNbaV0gfD0gb3RoZXIuYml0
c1tpXSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXRB
bmRDb3VudChjb25zdCBCaXRtYXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9
IFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGl0c1tpXSA9IG90aGVyLmJpdHNb
aV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KIGlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om9wZXJhdG9y
PT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzOyArK2kpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290452</attachid>
            <date>2016-10-01 17:26:01 -0700</date>
            <delta_ts>2016-10-01 18:09:07 -0700</delta_ts>
            <desc>looks pretty close</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22442</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBo
ZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENv
bnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRWZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVy
c2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRC
bG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBAIC0yMDcsNyArMjA4LDcgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZQogdGVtcGxhdGU8TWFya2VkQmxvY2s6
OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9u
TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KIEZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxv
Y2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkK
KyAgICBpZiAobmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXAoKSkKICAgICAgICAgcmV0dXJuIHN3ZWVw
SGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJs
ZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhl
bHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVN
b2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2NhdGVkPihzd2VlcE1vZGUpOwogfQpAQCAtMjc3LDYg
KzI3OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAK
ICAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0ZWQpOwogICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAgIG1fYWxs
b2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7
CiAKICAgICBTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBmb3JF
YWNoQ2VsbChmdW5jdG9yKTsKQEAgLTI5NSwxMCArMjk3LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENo
YW5jZVRvRmluYWxpemUoKQogewogICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlz
LCBmYWxzZSk7Ci0gICAgbV9ibG9jay0+Y2xlYXJNYXJrcygpOworICAgIG1fYmxvY2stPm1fbWFy
a3MuY2xlYXJBbGwoKTsKKyAgICBtX2Jsb2NrLT5jbGVhckhhc0FueUFsbG9jYXRlZCgpOworICAg
IG1fYmxvY2stPm1fbWFya2luZ1ZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFy
a2luZ1ZlcnNpb24oKTsKICAgICBtX3dlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKLQot
ICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0
cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdHBhY2UoKS5hbGxv
Y2F0ZWRWZXJzaW9uKCk7CiAgICAgc3dlZXAoKTsKIH0KIApAQCAtMzA3LDcgKzMxMSw3IEBAIEZy
ZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8KICAgICBBU1NFUlQoIWFsbG9j
YXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7
CiAKLSAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBpZiAoIWhhc0FueU5ld2x5QWxs
b2NhdGVkV2l0aFN3ZWVwKCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFk
eSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAg
ICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CkBAIC0zNDYsMjQgKzM1MCw1NiBAQCB2b2lkIE1h
cmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAgICAgQVNTRVJUKHZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpIHsKLSAgICAgICAg
Y2xlYXJNYXJrcyhtYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUg
dGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCi0gICAgICAg
IGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5
KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9u
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+
aXNBbGxvY2F0ZWQoJmhhbmRsZSgpKQorICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4dFZlcnNp
b24obV9tYXJraW5nVmVyc2lvbikgIT0gbWFya2luZ1ZlcnNpb24pIHsKKyAgICAgICAgLy8gV2Ug
YWxyZWFkeSBrbm93IHRoYXQgdGhlIGJsb2NrIGlzIGZ1bGwgYW5kIGlzIGFscmVhZHkgcmVjb2du
aXplZCBhcyBzdWNoLCBvciB0aGF0IHRoZQorICAgICAgICAvLyBibG9jayBkaWQgbm90IHN1cnZp
dmUgdGhlIHByZXZpb3VzIEdDLiBTbywgd2UgY2FuIGNsZWFyIG1hcmsgYml0cyB0aGUgb2xkIGZh
c2hpb25lZAorICAgICAgICAvLyB3YXkuIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBzdWNo
IGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFsbG9jYXRlZCB3aXRoIGFuIHVwLXRvLQorICAgICAgICAv
LyBkYXRlIHZlcnNpb24hIElmIGl0IGRvZXMsIHRoZW4gd2Ugd2FudCB0byBsZWF2ZSB0aGUgbmV3
bHlBbGxvY2F0ZWQgYWxvbmUsIHNpbmNlIHRoYXQKKyAgICAgICAgLy8gbWVhbnMgdGhhdCB3ZSBo
YWQgYWxsb2NhdGVkIGluIHRoaXMgcHJldmlvdXNseSBlbXB0eSBibG9jayBidXQgZGlkIG5vdCBm
aWxsIGl0IHVwLCBzbworICAgICAgICAvLyB3ZSBjcmVhdGVkIGEgbmV3bHlBbGxvY2F0ZWQuCisg
ICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBPbmUg
d2F5IG9yIGFub3RoZXIsIHdlJ2xsIHVwZGF0ZSBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgSGVh
cFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbiA9IHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5hbGxv
Y2F0ZWRWZXJzaW9uKCk7CisgICAgICAgIGlmIChXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPiog
bmV3bHlBbGxvY2F0ZWQgPSBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkLmdldCgpKSB7CisgICAg
ICAgICAgICBzaXplX3QgY291bnQ7CisgICAgICAgICAgICBpZiAoaGFuZGxlKCkubV9hbGxvY2F0
ZWRWZXJzaW9uID09IGFsbG9jYXRlZFZlcnNpb24pIHsKKyAgICAgICAgICAgICAgICAvLyBNZXJn
ZSB0aGUgY29udGVudHMgb2YgbWFya2VkIGludG8gbmV3bHlBbGxvY2F0ZWQuIElmIHdlIGdldCB0
aGUgZnVsbCBzZXQgb2YgYml0cworICAgICAgICAgICAgICAgIC8vIHRoZW4gZGVsZXRlIG5ld2x5
QWxsb2NhdGVkIGFuZCBzZXQgYWxsb2NhdGVkLgorICAgICAgICAgICAgICAgIGNvdW50ID0gbmV3
bHlBbGxvY2F0ZWQtPm1lcmdlQW5kQ291bnQobV9tYXJrcyk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIG5ld2x5QWxsb2Nh
dGVkIHdpdGggbWFya2VkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mCisgICAgICAgICAgICAg
ICAgLy8gYml0cyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4K
KyAgICAgICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5zZXRBbmRDb3VudChtX21h
cmtzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb3VudCA9PSBjZWxsc1BlckJs
b2NrKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3ItPnNldElzQWxsb2Nh
dGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9
IG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBDb3VudCB0aGUgbnVtYmVyIG9mIHNldCBiaXRzLiBJZiBpdCdzIHRoZSBmdWxsIHNldCwgdGhl
biBzZXQgYWxsb2NhdGVkIGFuZCBjbGVhciB0aGUKKyAgICAgICAgICAgIC8vIGJpdHMuIElmIG5v
dCwgdGhlbiBhbGxvY2F0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc3BsYXQgbWFya2VkIGludG8gaXQg
d2hpbGUgY2xlYXJpbmcKKyAgICAgICAgICAgIC8vIG1hcmtlZC4KKyAgICAgICAgICAgIHVuc2ln
bmVkIGNvdW50ID0gbV9tYXJrcy5jb3VudCgpOworICAgICAgICAgICAgaWYgKGNvdW50ID09IGNl
bGxzUGVyQmxvY2soKSkKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3ItPnNldElz
QWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OkJpdG1hcDxh
dG9tc1BlckJsb2NrPj4oKTsKKyAgICAgICAgICAgICAgICBtX25ld2x5QWxsb2NhdGVkLT5zZXRB
bmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoYW5k
bGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBhbGxvY2F0ZWRWZXJzaW9uOwogICAgIH0KLX0KLQot
dm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCi17Ci0gICAgY2xlYXJNYXJrcyh2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSk7Ci19Ci0KLXZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCi17Ci0gICAgbV9tYXJr
cy5jbGVhckFsbCgpOwogICAgIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKICAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAg
CisgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmpl
Y3QgaW4gdGhpcyBibG9jay4KKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5k
Q2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOwogfQogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtNDQ0LDggKzQ4MCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
ZGlkQWRkVG9BbGxvY2EKICAgICAKICAgICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5l
ZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAKLSAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFy
a2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplOwotICAgIGRvdWJsZSBtYXJrQ291bnRC
aWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJs
b2NrKTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxv
Y2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jaygpKTsKICAgICAKICAgICAvLyBUaGUgbWFy
ayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4KICAg
ICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTEg
KzE0MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVl
TGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENhbGwgdGhp
cyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0aW9uIHJl
bGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAgIC8vIGFu
ZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAg
Ym9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90
IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2NrKCk7Cisg
ICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkg
Y29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwogICAg
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw4ICsxNjIsMTEgQEAg
cHVibGljOgogICAgICAgICB2b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAg
ICAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCi0g
ICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fbmV3
bHlBbGxvY2F0ZWQ7IH0KKyAgICAgICAgaW5saW5lIGJvb2wgaXNOZXdseUFsbG9jYXRlZFN0YWxl
KCkgY29uc3Q7CiAgICAgICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaGFzQW55TmV3bHlB
bGxvY2F0ZWRXaXRoU3dlZXAoKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaGFzQW55TmV3bHlBbGxv
Y2F0ZWQoKTsKKyAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJ
dGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2
ZUNlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rv
cj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYp
OwpAQCAtMTg1LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAg
ICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxw
ZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAg
IApAQCAtMjMxLDYgKzIzMiw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBt
X2FsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0
OworICAgICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uOwogICAg
ICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAg
IH07CkBAIC0yODksMTMgKzI5MiwxMSBAQCBwcml2YXRlOgogICAgIEF0b20qIGF0b21zKCk7CiAg
ICAgICAgIAogICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKTsKLSAgICB2b2lkIGNsZWFyTWFya3MoKTsKLSAgICB2b2lkIGNsZWFyTWFya3MoSGVhcFZl
cnNpb24gbWFya2luZ1ZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNBbnlNYXJrZWQoKTsKICAg
ICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CiAgICAgICAgIAotICAgIFdURjo6Qml0bWFw
PGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90PiBtX21hcmtzOworICAg
IFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbWFya3M7CiAKICAgICBib29sIG1fbmVlZHNE
ZXN0cnVjdGlvbjsKICAgICBMb2NrIG1fbG9jazsKQEAgLTUzNCwxNSArNTM1LDYgQEAgaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIG1fbmV3bHlBbGxvY2F0ZWQt
PmNsZWFyKG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAgICBpZiAobV9uZXdseUFs
bG9jYXRlZCkgewotICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogewogICAgIEFTU0VSVChNYXJrZWRC
bG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDkgKzI3LDE1IEBACiAKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2Nr
KCkKK3sKKyAgICByZXR1cm4gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7
Cit9CisKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CkBAIC01Nyw2ICs2MywyOCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmVDCiAgICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgc3Rh
dGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CiB9CiAKK2lubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fYWxsb2NhdGVkVmVyc2lvbiA9PSBoZWFwKCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVy
c2lvbigpOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXds
eUFsbG9jYXRlZFdpdGhTd2VlcCgpCit7CisgICAgaWYgKCFtX25ld2x5QWxsb2NhdGVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpKSB7Cisg
ICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgICAgICBtX2FsbG9jYXRlZFZl
cnNpb24gPSBoZWFwKCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCgpCit7CisgICAgcmV0
dXJuIG1fbmV3bHlBbGxvY2F0ZWQgJiYgIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpOworfQorCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6Zm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9CisgICAgSGVhcFZlcnNpb24g
YWxsb2NhdGVkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkVmVyc2lvbjsgfQog
CiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VB
bGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0OyB9CkBAIC0yMTcsNiArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIEhl
YXAqIG1faGVhcDsKICAgICBIZWFwVmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZl
cnNpb24gfTsKKyAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVy
c2lvbiB9OwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsK
ICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Jp
dG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCShyZXZpc2lvbiAy
MDY3MTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTYgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gQml0bWFwQXRvbWljTW9kZSB7
Ci0gICAgLy8gVGhpcyBtYWtlcyBjb25jdXJyZW50VGVzdEFuZFNldCBiZWhhdmUganVzdCBsaWtl
IHRlc3RBbmRTZXQuCi0gICAgQml0bWFwTm90QXRvbWljLAotCi0gICAgLy8gVGhpcyBtYWtlcyBj
b25jdXJyZW50VGVzdEFuZFNldCB1c2UgY29tcGFyZUFuZFN3YXAsIHNvIHRoYXQgaXQncwotICAg
IC8vIGF0b21pYyBldmVuIHdoZW4gdXNlZCBjb25jdXJyZW50bHkuCi0gICAgQml0bWFwQXRvbWlj
Ci19OwotCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlID0gQml0bWFwTm90QXRvbWljLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQzMl90Pgor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+
CiBjbGFzcyBCaXRtYXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIApAQCAt
NTksOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG5leHRQb3NzaWJseVVuc2V0KHNpemVf
dCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcihzaXplX3QpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsK
LSAgICBpbnQ2NF90IGZpbmRSdW5PZlplcm9zKHNpemVfdCkgY29uc3Q7Ci0gICAgc2l6ZV90IGNv
dW50KHNpemVfdCA9IDApIGNvbnN0OworICAgIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90
IHJ1bkxlbmd0aCkgY29uc3Q7CisgICAgc2l6ZV90IGNvdW50KHNpemVfdCBzdGFydCA9IDApIGNv
bnN0OwogICAgIHNpemVfdCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRnVsbCgpIGNv
bnN0OwogICAgIApAQCAtNzEsNiArNjIsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+CiAgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmKSBjb25zdDsKICAg
ICAKKyAgICBzaXplX3QgbWVyZ2VBbmRDb3VudChjb25zdCBCaXRtYXAmKTsKKyAgICBzaXplX3Qg
c2V0QW5kQ291bnQoY29uc3QgQml0bWFwJik7CisgICAgdm9pZCBzZXRBbmRDbGVhcihCaXRtYXAm
KTsKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIApAQCAtOTAsMjYgKzg1
LDI2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxXb3JkVHlwZSwgd29yZHM+IGJpdHM7CiB9
OwogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+OjpCaXRtYXAoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OkJp
dG1hcCgpCiB7CiAgICAgY2xlYXJBbGwoKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxp
bmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpnZXQoc2l6
ZV90IG4pIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90
IG4pIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwg
KG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9p
ZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCiB7CiAgICAgYml0
c1tuIC8gd29yZFNpemVdIHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUp
CiAgICAgICAgIHNldChuKTsKQEAgLTExNyw4ICsxMTIsOCBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgICAgIGNsZWFyKG4pOwogfQogCi10ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBX
b3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3Jk
VHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwg
KG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTI3
LDggKzEyMiw4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFw
QXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXpl
X3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXpl
X3QgbikKIHsKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAg
IHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTEzNywxNCArMTMyLDkgQEAgaW5saW5l
IGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZGUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3Qg
bikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJl
dHVybiB0ZXN0QW5kU2V0KG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRv
bWljKTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwog
ICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9
IGJpdHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNTcsMTQgKzE0Nyw5IEBAIGlubGluZSBib29sIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCiB7
Ci0gICAgaWYgKGF0b21pY01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAgICAgICByZXR1cm4g
dGVzdEFuZENsZWFyKG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRvbWlj
KTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAg
IHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9IGJp
dHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNzcsMjggKzE2MiwyOCBAQCBpbmxpbmUgYm9vbCBCaXRt
YXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdv
cmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpjbGVhcihzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwg
KG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFw
QXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQoYml0
cy5kYXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpuZXh0
UG9zc2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAg
ICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1cm4gKChzdGFydCAv
IHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIAot
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25z
dAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5l
IGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6
ZV90IHJ1bkxlbmd0aCkgY29uc3QKIHsKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1
bkxlbmd0aCA9IDE7IApAQCAtMjE3LDggKzIwMiw4IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxi
aXRtYXBTaXplLCBhdG9taWMKICAgICByZXR1cm4gLTE7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0ID0g
MDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkgewpAQCAtMjMwLDgg
KzIxNSw4IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRv
bWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6
ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKGJpdHNbaV0p
CkBAIC0yMzksOCArMjI0LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
Qml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBz
aXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNGdWxsKCkg
Y29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmICh+
Yml0c1tpXSkKQEAgLTI0OCwzMCArMjMzLDMwIEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY00KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpt
ZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6bWVyZ2UoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0KIAot
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBv
dGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRv
bWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFw
JiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3Qg
Qml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kp
CiAgICAgICAgIGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRU
eXBlPgordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9t
aWNNb2RlLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QK
K2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuYyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpIHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBAIC0yODYsOCAr
MjcxLDM1IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICB9
CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBj
b25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUFuZENvdW50KGNv
bnN0IEJpdG1hcCYgb3RoZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRD
b3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpzZXRBbmRDb3VudChjb25zdCBCaXRtYXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQg
PSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKKyAgICAgICAgcmVz
dWx0ICs9IFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gPSBvdGhl
ci5iaXRzW2ldKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgYml0c1tpXSA9IG90aGVyLmJp
dHNbaV07CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KK30KKwordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAg
ICBpZiAoYml0c1tpXSAhPSBvdGhlci5iaXRzW2ldKQpAQCAtMjk2LDE0ICszMDgsMTQgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiB0cnVlOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29u
c3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0
bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290456</attachid>
            <date>2016-10-01 18:09:07 -0700</date>
            <delta_ts>2016-10-02 19:55:30 -0700</delta_ts>
            <desc>might be done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>27775</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg4LDE4ICszODgsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUs
CiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwog
ICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAg
ICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHByZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNvbnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdh
dGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNl
IGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRv
IGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAg
ICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFj
a1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRp
dmVSb290cyk7Ci0gICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZH
OjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0pOwpAQCAtNDI0LDYgKzQxNCwxNSBAQCB2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAKICAgICAgICAgYmVnaW5NYXJraW5n
KCk7CiAKKyAgICAgICAgeworICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VU
aW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwor
ICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9vdHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMpOwor
ICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwor
ICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmln
aW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBnYXRoZXJK
U1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgZ2F0aGVyU2NyYXRj
aEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICAgICAgfQorCiAgICAgICAgIG1f
cGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdCA9IGZhbHNlOwogCiAgICAgICAgIG1faGVscGVyQ2xp
ZW50LnNldEZ1bmN0aW9uKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKIAogTWFya2VkQmxvY2s6OkhhbmRs
ZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX3dlYWtTZXQo
aGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX2FsbG9jYXRlZFZlcnNpb24oTWFy
a2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJs
b2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKQEAgLTIwNyw3
ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0ZW1w
bGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUg
c2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJT
ZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGlmICht
X25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChuZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKQogICAg
ICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVj
dGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiAg
ICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rp
b25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9k
ZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9w
QWxsb2NhdGluZwogICAgIAogICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7CiAgICAgbV9u
ZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9j
az4+KCk7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFs
bG9jYXRlZFZlcnNpb24oKTsKIAogICAgIFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciBmdW5jdG9y
KHRoaXMpOwogICAgIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsyOTcsMTIgQEAg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9yKCktPnNl
dElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7Cisg
ICAgbV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFySGFzQW55
QWxsb2NhdGVkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IHZtKCktPmhlYXAu
b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IHZtKCktPmhlYXAu
b2JqZWN0cGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKICAgICBzd2VlcCgpOwogfQogCkBAIC0z
MDcsNyArMzExLDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsbwog
ICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKICAgICBBU1NFUlQo
IWlzRnJlZUxpc3RlZCgpKTsKIAotICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgeworICAgIGlm
ICghaGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXAoKSkgewogICAgICAgICAvLyBUaGlzIG1l
YW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFs
bG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIH0KQEAgLTM0NiwyNCAr
MzUwLDczIEBAIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmUKIHsKICAg
ICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJz
aW9uKSkgewotICAgICAgICBjbGVhck1hcmtzKG1hcmtpbmdWZXJzaW9uKTsKLSAgICAgICAgLy8g
VGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhp
cyBibG9jay4KLSAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNr
SXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICBpZiAoIWFyZU1hcmtzU3Rh
bGUobWFya2luZ1ZlcnNpb24pKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGhhbmRs
ZSgpLmFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCgmaGFuZGxlKCkpCisgICAgICAgIHx8IE1hcmtl
ZFNwYWNlOjpuZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9uKSAhPSBtYXJraW5nVmVyc2lvbikg
eworICAgICAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYmxvY2sgaXMgZnVsbCBhbmQg
aXMgYWxyZWFkeSByZWNvZ25pemVkIGFzIHN1Y2gsIG9yIHRoYXQgdGhlCisgICAgICAgIC8vIGJs
b2NrIGRpZCBub3Qgc3Vydml2ZSB0aGUgcHJldmlvdXMgR0MuIFNvLCB3ZSBjYW4gY2xlYXIgbWFy
ayBiaXRzIHRoZSBvbGQgZmFzaGlvbmVkCisgICAgICAgIC8vIHdheS4gTm90ZSB0aGF0IGl0J3Mg
cG9zc2libGUgZm9yIHN1Y2ggYSBibG9jayB0byBoYXZlIG5ld2x5QWxsb2NhdGVkIHdpdGggYW4g
dXAtdG8tCisgICAgICAgIC8vIGRhdGUgdmVyc2lvbiEgSWYgaXQgZG9lcywgdGhlbiB3ZSB3YW50
IHRvIGxlYXZlIHRoZSBuZXdseUFsbG9jYXRlZCBhbG9uZSwgc2luY2UgdGhhdAorICAgICAgICAv
LyBtZWFucyB0aGF0IHdlIGhhZCBhbGxvY2F0ZWQgaW4gdGhpcyBwcmV2aW91c2x5IGVtcHR5IGJs
b2NrIGJ1dCBkaWQgbm90IGZpbGwgaXQgdXAsIHNvCisgICAgICAgIC8vIHdlIGNyZWF0ZWQgYSBu
ZXdseUFsbG9jYXRlZC4KKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIE9uZSB3YXkgb3IgYW5vdGhlciwgd2UnbGwgdXBkYXRlIG5ld2x5QWxsb2Nh
dGVkLgorICAgICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0gdm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgaWYgKFdURjo6Qml0bWFw
PGF0b21zUGVyQmxvY2s+KiBuZXdseUFsbG9jYXRlZCA9IGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0
ZWQuZ2V0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAgICAgIGlmICho
YW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPT0gYWxsb2NhdGVkVmVyc2lvbikgeworICAgICAg
ICAgICAgICAgIC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBuZXdseUFsbG9j
YXRlZC4gSWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAgICAgICAgLy8g
dGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAg
ICAgICAgY291bnQgPSBuZXdseUFsbG9jYXRlZC0+bWVyZ2VBbmRDb3VudChtX21hcmtzKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgY29udGVu
dHMgb2YgbmV3bHlBbGxvY2F0ZWQgd2l0aCBtYXJrZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQg
b2YKKyAgICAgICAgICAgICAgICAvLyBiaXRzIHRoZW4gZGVsZXRlIG5ld2x5QWxsb2NhdGVkIGFu
ZCBzZXQgYWxsb2NhdGVkLgorICAgICAgICAgICAgICAgIGNvdW50ID0gbmV3bHlBbGxvY2F0ZWQt
PnNldEFuZENvdW50KG1fbWFya3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFj
b3VudCkKKyAgICAgICAgICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2soKSkgeworICAgICAgICAgICAg
ICAgIGhhbmRsZSgpLmFsbG9jYXRvci0+c2V0SXNBbGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2Yg
c2V0IGJpdHMuIElmIGl0J3MgdGhlIGZ1bGwgc2V0LCB0aGVuIHNldCBhbGxvY2F0ZWQgYW5kIGNs
ZWFyIHRoZQorICAgICAgICAgICAgLy8gYml0cy4gSWYgbm90LCB0aGVuIGFsbG9jYXRlIG5ld2x5
QWxsb2NhdGVkIGFuZCBzcGxhdCBtYXJrZWQgaW50byBpdCB3aGlsZSBjbGVhcmluZworICAgICAg
ICAgICAgLy8gbWFya2VkLgorICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX21hcmtzLmNv
dW50KCk7CisgICAgICAgICAgICBpZiAoIWNvdW50KQorICAgICAgICAgICAgICAgIG1fbWFya3Mu
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID09IGNlbGxzUGVyQmxvY2so
KSkKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3ItPnNldElzQWxsb2NhdGVkKCZo
YW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX25l
d2x5QWxsb2NhdGVkID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2Nr
Pj4oKTsKKyAgICAgICAgICAgICAgICBtX25ld2x5QWxsb2NhdGVkLT5zZXRBbmRDbGVhcihtX21h
cmtzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoYW5kbGUoKS5tX2FsbG9j
YXRlZFZlcnNpb24gPSBhbGxvY2F0ZWRWZXJzaW9uOwogICAgIH0KKyAgICBjbGVhckhhc0FueU1h
cmtlZCgpOworICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgbV9tYXJraW5nVmVyc2lv
biA9IG1hcmtpbmdWZXJzaW9uOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZp
cnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgaGFuZGxlKCku
YWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgp
LCB0cnVlKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCit2b2lkIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVkKCkKIHsKLSAgICBjbGVhck1hcmtzKHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKKyAgICBtX25ld2x5QWxsb2Nh
dGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVs
bFZlcnNpb247CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24g
bWFya2luZ1ZlcnNpb24pCit2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtzKCkKIHsKLSAgICBt
X21hcmtzLmNsZWFyQWxsKCk7Ci0gICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsK
KyAgICBpZiAoYXJlTWFya3NTdGFsZSgpKQorICAgICAgICBtX21hcmtzLmNsZWFyKCk7CisgICAg
bV9tYXJraW5nVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAogI2lmICFB
U1NFUlRfRElTQUJMRUQKQEAgLTQ0NCw4ICs0OTcsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmRpZEFkZFRvQWxsb2NhCiAgICAgCiAgICAgYmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24g
PSBuZWVkc0Rlc3RydWN0aW9uKCk7CiAgICAgCi0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9
IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFya0Nv
dW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQ
ZXJCbG9jayk7CisgICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtl
ZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8gVGhl
IG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2Uu
CiAgICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4o
c3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDExICsxNDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29uc3Qg
RnJlZUxpc3QmKTsKICAgICAgICAgRnJlZUxpc3QgcmVzdW1lQWxsb2NhdGluZygpOyAvLyBDYWxs
IHRoaXMgaWYgeW91IGNhbm9uaWNhbGl6ZWQgYSBibG9jayBmb3Igc29tZSBub24tY29sbGVjdGlv
biByZWxhdGVkIHB1cnBvc2UuCiAgICAgICAgICAgICAKLSAgICAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSAibmV3bHkgYWxsb2NhdGVkIiBiaXRtYXAgd2FzIG5vbi1udWxsIAotICAgICAgICAv
LyBhbmQgd2FzIHN1Y2Nlc3NmdWxseSBjbGVhcmVkIGFuZCBmYWxzZSBvdGhlcndpc2UuCi0gICAg
ICAgIGJvb2wgY2xlYXJOZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgCiAgICAgICAgIHNp
emVfdCBjZWxsU2l6ZSgpOworICAgICAgICBpbmxpbmUgdW5zaWduZWQgY2VsbHNQZXJCbG9jaygp
OworICAgICAgICAKICAgICAgICAgY29uc3QgQWxsb2NhdG9yQXR0cmlidXRlcyYgYXR0cmlidXRl
cygpIGNvbnN0OwogICAgICAgICBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb24oKSBjb25zdDsK
ICAgICAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3Q7CkBAIC0xNjQsOCArMTYyLDEz
IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7
CiAgICAgICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAg
IAotICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X25ld2x5QWxsb2NhdGVkOyB9CisgICAgICAgIGlubGluZSBib29sIGlzTmV3bHlBbGxvY2F0ZWRT
dGFsZSgpIGNvbnN0OwogICAgICAgICAgICAgCisgICAgICAgIGlubGluZSBib29sIGhhc0FueU5l
d2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCk7CisgICAgICAgIGlubGluZSBib29sIGhhc0FueU5ld2x5
QWxsb2NhdGVkKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdGVkKCk7Cisg
ICAgICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3Rh
dHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0
IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJ
dGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTE4NSw3
ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhbmRs
ZShIZWFwJiwgdm9pZCopOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgICAgICB0ZW1wbGF0
ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2Ny
aWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKQEAgLTIzMSw2
ICsyMzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogbV9hbGxvY2F0b3Ig
eyBudWxscHRyIH07CiAgICAgICAgIHNpemVfdCBtX2luZGV4IHsgc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1fd2Vha1NldDsKKyAgICAgICAg
CisgICAgICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lvbjsKICAgICAgICAgICAgIAog
ICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIgfTsKICAgICB9OwpAQCAtMjc4
LDcgKzI4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9CiAgICAgCi0gICAgaW5saW5l
IHZvaWQgcmVzZXRNYXJraW5nVmVyc2lvbigpOworICAgIHZvaWQgcmVzZXRNYXJrcygpOwogICAg
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0g
YXRvbVNpemUgLSAxOwpAQCAtMjg5LDEzICsyOTQsMTEgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBh
dG9tcygpOwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1h
cmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFy
a2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwogICAgICAgICAKLSAgICBX
VEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9t
YXJrczsKKyAgICBXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPiBtX21hcmtzOwogCiAgICAgYm9v
bCBtX25lZWRzRGVzdHJ1Y3Rpb247CiAgICAgTG9jayBtX2xvY2s7CkBAIC01MzQsMTUgKzUzNyw2
IEBAIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAgICBtX25ld2x5
QWxsb2NhdGVkLT5jbGVhcihtX2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKIH0KIAotaW5saW5lIGJv
b2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgaWYg
KG1fbmV3bHlBbGxvY2F0ZWQpIHsKLSAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKIHsKICAgICBBU1NF
UlQoTWFya2VkQmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjcxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw5ICsyNywxNSBAQAogCiAjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2Vs
bHNQZXJCbG9jaygpCit7CisgICAgcmV0dXJuIE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBj
ZWxsU2l6ZSgpOworfQorCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUo
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewogICAg
IEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwpAQCAtMzksMTEgKzQ1LDExIEBAIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwotICAg
IAogICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAorICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7Cisg
ICAgCiAgICAgaWYgKGJsb2NrLmFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTU3LDYgKzYzLDI4IEBAIGlubGluZSBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTGl2ZUMKICAgICByZXR1cm4gaXNMaXZlKG1hcmtpbmdWZXJzaW9uLCBz
dGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKIH0KIAoraW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9hbGxvY2F0ZWRWZXJzaW9uID09IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRW
ZXJzaW9uKCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5l
d2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCkKK3sKKyAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaXNOZXdseUFsbG9jYXRlZFN0YWxlKCkpIHsK
KyAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgICAgIG1fYWxsb2NhdGVk
VmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVkKCkKK3sKKyAgICBy
ZXR1cm4gbV9uZXdseUFsbG9jYXRlZCAmJiAhaXNOZXdseUFsbG9jYXRlZFN0YWxlKCk7Cit9CisK
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKQEAgLTg3LDEwICsxMTUsNSBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2Nr
OjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLWlubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKCkKLXsKLSAgICBtX21hcmtp
bmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsMTYgKzQ4MywxNSBAQCB2b2lkIE1hcmtl
ZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgbV9tYXJraW5nVmVy
c2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOwotICAgICAgICAKLSAgICAgICAg
aWYgKFVOTElLRUxZKG1fbWFya2luZ1ZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAg
ICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkg
c2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KKyAgICAgICAgaWYgKFVOTElLRUxZ
KG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgewogICAg
ICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6
OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5y
ZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2so
KS5yZXNldE1hcmtzKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAg
CisgICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9u
KTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDog
bV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAg
IH0KQEAgLTUxMSw2ICs1MTAsMTUgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkK
IAogdm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCiB7CisgICAgaWYgKFVOTElLRUxZKG5l
eHRWZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAg
ICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSog
aGFuZGxlKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlLT5yZXNldEFsbG9jYXRlZCgpOworICAg
ICAgICAgICAgfSk7CisgICAgfQorICAgICAgICAKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBu
ZXh0VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24pOworICAgIAogICAgIGZvckVhY2hBbGxvY2F0
b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlv
blN0YXR1cyB7CiAgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDY3MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVt
U2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAogICAgIHN0YXRpYyBj
b25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNo
bHkgYWxsb2NhdGVkIGJsb2Nrcy4KLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlh
bFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0
aC4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAyOyAvLyBU
aGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4gU2V0IHRvIG1ha2Ugc3Vy
ZSB0aGF0IG5leHRWZXJzaW9uKG51bGxWZXJzaW9uKSAhPSBpbml0aWFsVmVyc2lvbi4KICAgICAK
ICAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQogICAgIHsK
ICAgICAgICAgdmVyc2lvbisrOwogICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikK
LSAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbml0aWFsVmVy
c2lvbjsKICAgICAgICAgcmV0dXJuIHZlcnNpb247CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE3
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAg
ICAKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFy
a2luZ1ZlcnNpb247IH0KKyAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VB
bGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxs
b2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KQEAgLTIx
Nyw2ICsyMTgsNyBAQCBwcml2YXRlOgogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIEhlYXBWZXJz
aW9uIG1fbWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OworICAgIEhlYXBWZXJzaW9u
IG1fYWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90IG1fY2Fw
YWNpdHk7CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotZW51bSBCaXRtYXBBdG9taWNNb2RlIHsKLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1
cnJlbnRUZXN0QW5kU2V0IGJlaGF2ZSBqdXN0IGxpa2UgdGVzdEFuZFNldC4KLSAgICBCaXRtYXBO
b3RBdG9taWMsCi0KLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IHVzZSBj
b21wYXJlQW5kU3dhcCwgc28gdGhhdCBpdCdzCi0gICAgLy8gYXRvbWljIGV2ZW4gd2hlbiB1c2Vk
IGNvbmN1cnJlbnRseS4KLSAgICBCaXRtYXBBdG9taWMKLX07Ci0KLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUgPSBCaXRtYXBOb3RBdG9taWMs
IHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KIGNsYXNzIEJpdG1hcCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgCkBAIC01OSw4ICs1MCw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25zdDsKICAgICB2b2lkIGNsZWFy
KHNpemVfdCk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwotICAgIGludDY0X3QgZmluZFJ1bk9mWmVy
b3Moc2l6ZV90KSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90ID0gMCkgY29uc3Q7Cisg
ICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKKyAgICBz
aXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRW1wdHko
KSBjb25zdDsKICAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7CiAgICAgCkBAIC03MSw2ICs2Miwx
MCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVh
Y2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAorICAgIHNpemVfdCBtZXJnZUFuZENv
dW50KGNvbnN0IEJpdG1hcCYpOworICAgIHNpemVfdCBzZXRBbmRDb3VudChjb25zdCBCaXRtYXAm
KTsKKyAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0
bWFwJikgY29uc3Q7CiAgICAgCkBAIC05MCwyNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgp
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgp
OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4g
ISEoYml0c1tuIC8gd29yZFNpemVdICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0
eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNN
b2RlLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnNldChzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8
PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBi
b29sIHZhbHVlKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBu
LCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3
LDggKzExMiw4IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAg
ICAgICAgY2xlYXIobik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBB
dG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3Qg
bikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4p
CiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXpl
X3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMTM3LDE0ICsxMzIsOSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25j
dXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2Rl
ID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAg
ICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBl
IG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdv
cmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAg
LTE1NywxNCArMTQ3LDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVz
dEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29u
Y3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBC
aXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBB
U1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3
NywyOCArMTYyLDI4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAg
IGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6Y2xlYXJBbGwoKQogewogICAgIG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMp
KTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRv
bWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFy
dCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5
VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3Jk
U2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6
ZTsKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRS
dW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewog
ICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCAr
MjAyLDggQEAgaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJl
dHVybiAtMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29u
c3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0
KSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUg
d29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0yMzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKQogICAgICAgICBpZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBpbmxp
bmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzMs
MzAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVy
biB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9k
ZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIp
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90
aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
Yml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihj
b25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zmls
dGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3Ro
ZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFj
aFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3Jk
VHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTI4Niw4ICsyNzEsMzUgQEAgaW5saW5lIHZvaWQgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpv
cGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ291bnQoY29uc3QgQml0bWFwJiBvdGhlcikKK3sKKyAg
ICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyAr
K2kpCisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVk
PihiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6
ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENvdW50KGNvbnN0IEJpdG1h
cCYgb3RoZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSA9IG90aGVyLmJpdHNbaV0pKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVh
cihCaXRtYXAmIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsr
aSkgeworICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0
c1tpXSA9IDA7CisgICAgfQorfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5h
bWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpv
cGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJp
dHNbaV0pCkBAIC0yOTYsMTQgKzMwOCwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3Bl
cmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxp
bmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFz
aCgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNv
bnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290477</attachid>
            <date>2016-10-02 19:55:30 -0700</date>
            <delta_ts>2016-10-02 20:15:31 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32224</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg4LDE4ICszODgsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUs
CiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwog
ICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAg
ICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHByZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNvbnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdh
dGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNl
IGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRv
IGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAg
ICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFj
a1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRp
dmVSb290cyk7Ci0gICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZH
OjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0pOwpAQCAtNDYzLDkgKzQ1MywxOSBAQCB2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIFBhcmFsbGVsTW9kZUVu
YWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9yKTsKICAgICAgICAgCiAgICAgICAgIG1fc2xvdFZp
c2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKKworICAgICAgICB7CisgICAgICAgICAgICBUaW1pbmdT
Y29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNv
bnNlcnZhdGl2ZSBzY2FuIik7CisgICAgICAgICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2
YXRpdmVSb290cygqdGhpcyk7CisgICAgICAgICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisgICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZh
dGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsK
KyAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAg
ICAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgIH0KKwogICAgICAgICB2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgICAgICB2
aXNpdFNtYWxsU3RyaW5ncygpOwotICAgICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNl
cnZhdGl2ZVJvb3RzKTsKICAgICAgICAgdmlzaXRQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290Vmlz
aXRvcik7CiAgICAgICAgIHZpc2l0QXJndW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7CiAg
ICAgICAgIHZpc2l0RXhjZXB0aW9uKGhlYXBSb290VmlzaXRvcik7CkBAIC01MjQsMTEgKzUyNCw2
IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVh
ck1hcmtzRm9yRnVsbENvbGxlY3Rpb24oKTsKICAgICAKICAgICB7Ci0gICAgICAgIFRpbWluZ1Nj
b3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2Uu
Y2xlYXJOZXdseUFsbG9jYXRlZCIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgewogICAgICAgICBUaW1pbmdTY29wZSBjbGVh
ck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOwog
ICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDggQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6
OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNr
ID0gMDsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgp
OyArK2luZGV4KSB7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9j
a3NbaW5kZXhdOwotICAgICAgICBpZiAoYmxvY2spIHsKLSAgICAgICAgICAgIC8vIEZvcmNlcyB1
cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBl
ZmZlY3QuCi0gICAgICAgICAgICBpZiAoYmxvY2stPmFyZU1hcmtzU3RhbGUoKSkKLSAgICAgICAg
ICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldE1hcmtpbmdWZXJzaW9uKCk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkuc2V0TmVlZHNE
ZXN0cnVjdGlvbigpOwogICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAg
ICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0
aW9uKSB7CiAgICAgICAgICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKIAogTWFya2VkQmxvY2s6Okhh
bmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX3dlYWtT
ZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX2FsbG9jYXRlZFZlcnNpb24o
TWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGws
IGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKQEAgLTIw
Nyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0
ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVj
dGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1v
ZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGlm
IChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2Vl
cCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2Rl
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVw
TW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+
KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIAogICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7
CiAgICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4+KCk7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RT
cGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAgIFNldE5ld2x5QWxsb2NhdGVkRnVuY3Rv
ciBmdW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsy
OTcsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2Nh
dG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1h
cmtzKCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNs
ZWFySGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAo
KS0+b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3
bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+
b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAgICAgc3dlZXAoKTsKIH0KIApAQCAt
MzA3LDcgKzMxMSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8K
ICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAgICAgQVNTRVJU
KCFpc0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBp
ZiAoIWhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCkpIHsKICAgICAgICAgLy8gVGhpcyBt
ZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBh
bGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CkBAIC0zNDYsMjQg
KzM1MCw4MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAg
ICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVy
c2lvbikpIHsKLSAgICAgICAgY2xlYXJNYXJrcyhtYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIC8v
IFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRo
aXMgYmxvY2suCi0gICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVj
a0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0
YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChoYW5k
bGUoKS5hbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQoJmhhbmRsZSgpKQorICAgICAgICB8fCAobWFy
a2luZ1ZlcnNpb24gIT0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uCisgICAgICAgICAgICAmJiBN
YXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikgIT0gbWFya2luZ1ZlcnNp
b24pKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBibG9jayBpcyBmdWxs
IGFuZCBpcyBhbHJlYWR5IHJlY29nbml6ZWQgYXMgc3VjaCwgb3IgdGhhdCB0aGUKKyAgICAgICAg
Ly8gYmxvY2sgZGlkIG5vdCBzdXJ2aXZlIHRoZSBwcmV2aW91cyBHQy4gU28sIHdlIGNhbiBjbGVh
ciBtYXJrIGJpdHMgdGhlIG9sZCBmYXNoaW9uZWQKKyAgICAgICAgLy8gd2F5LiBOb3RlIHRoYXQg
aXQncyBwb3NzaWJsZSBmb3Igc3VjaCBhIGJsb2NrIHRvIGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0
aCBhbiB1cC10by0KKyAgICAgICAgLy8gZGF0ZSB2ZXJzaW9uISBJZiBpdCBkb2VzLCB0aGVuIHdl
IHdhbnQgdG8gbGVhdmUgdGhlIG5ld2x5QWxsb2NhdGVkIGFsb25lLCBzaW5jZSB0aGF0CisgICAg
ICAgIC8vIG1lYW5zIHRoYXQgd2UgaGFkIGFsbG9jYXRlZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1w
dHkgYmxvY2sgYnV0IGRpZCBub3QgZmlsbCBpdCB1cCwgc28KKyAgICAgICAgLy8gd2UgY3JlYXRl
ZCBhIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gT25lIHdheSBvciBhbm90aGVyLCB3ZSdsbCB1cGRhdGUgbmV3bHlB
bGxvY2F0ZWQuCisgICAgICAgIEhlYXBWZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24gPSB2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOworICAgICAgICBpZiAoV1RGOjpC
aXRtYXA8YXRvbXNQZXJCbG9jaz4qIG5ld2x5QWxsb2NhdGVkID0gaGFuZGxlKCkubV9uZXdseUFs
bG9jYXRlZC5nZXQoKSkgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50OworICAgICAgICAgICAg
aWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9PSBhbGxvY2F0ZWRWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRlbnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5
QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mIGJpdHMKKyAgICAgICAgICAgICAg
ICAvLyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAg
ICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5tZXJnZUFuZENvdW50KG1fbWFya3Mp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBj
b250ZW50cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1hcmtlZC4gSWYgd2UgZ2V0IHRoZSBmdWxs
IHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGJpdHMgdGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0
ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291bnQgPSBuZXdseUFsbG9j
YXRlZC0+c2V0QW5kQ291bnQobV9tYXJrcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIWNvdW50KQorICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBu
dWxscHRyOworICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPT0gY2VsbHNQZXJCbG9jaygpKSB7
CisgICAgICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yLT5zZXRJc0FsbG9jYXRlZCgmaGFu
ZGxlKCksIHRydWUpOworICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQg
PSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gQ291bnQgdGhlIG51bWJlciBvZiBzZXQgYml0cy4gSWYgaXQncyB0aGUgZnVsbCBzZXQsIHRo
ZW4gc2V0IGFsbG9jYXRlZCBhbmQgY2xlYXIgdGhlCisgICAgICAgICAgICAvLyBiaXRzLiBJZiBu
b3QsIHRoZW4gYWxsb2NhdGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNwbGF0IG1hcmtlZCBpbnRvIGl0
IHdoaWxlIGNsZWFyaW5nCisgICAgICAgICAgICAvLyBtYXJrZWQuCisgICAgICAgICAgICB1bnNp
Z25lZCBjb3VudCA9IG1fbWFya3MuY291bnQoKTsKKyAgICAgICAgICAgIGlmIChjb3VudCkgewor
ICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSBjZWxsc1BlckJsb2NrKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgICAgICBoYW5k
bGUoKS5hbGxvY2F0b3ItPnNldElzQWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFs
bG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7
CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQtPnNldEFuZENs
ZWFyKG1fbWFya3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBhbGxvY2F0ZWRWZXJzaW9u
OwogICAgIH0KKyAgICBjbGVhckhhc0FueU1hcmtlZCgpOworICAgIFdURjo6c3RvcmVTdG9yZUZl
bmNlKCk7CisgICAgbV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIAorICAg
IC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGlu
IHRoaXMgYmxvY2suCisgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNr
SXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9j
azo6Y2xlYXJNYXJrcygpCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVk
KCkKIHsKLSAgICBjbGVhck1hcmtzKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVy
c2lvbigpKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRl
ZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCit2b2lkIE1hcmtlZEJs
b2NrOjpyZXNldE1hcmtzKCkKIHsKLSAgICBtX21hcmtzLmNsZWFyQWxsKCk7Ci0gICAgY2xlYXJI
YXNBbnlNYXJrZWQoKTsKLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fbWFya2lu
Z1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsKKyAgICAvLyBXZSB3YW50IGFib3V0VG9NYXJrU2xv
dygpIHRvIHNlZSB3aGF0IHRoZSBtYXJrIGJpdHMgd2VyZSBhZnRlciB0aGUgbGFzdCBjb2xsZWN0
aW9uLiBJdCB1c2VzCisgICAgLy8gdGhlIHZlcnNpb24gbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIGJl
dHdlZW4gdGhlIG1hcmtzIGhhdmluZyBhbHJlYWR5IGJlZW4gc3RhbGUgYmVmb3JlCisgICAgLy8g
YmVnaW5NYXJraW5nKCksIG9yIGp1c3Qgc3RhbGUgbm93IHRoYXQgYmVnaW5NYXJraW5nKCkgYnVt
cGVkIHRoZSB2ZXJzaW9uLiBJZiB3ZSBoYXZlIGEgdmVyc2lvbgorICAgIC8vIHdyYXBhcm91bmQs
IHRoZW4gd2Ugd2lsbCBjYWxsIHRoaXMgbWV0aG9kIGJlZm9yZSByZXNldHRpbmcgdGhlIHZlcnNp
b24gdG8gbnVsbC4gV2hlbiB0aGUKKyAgICAvLyB2ZXJzaW9uIGlzIG51bGwsIGFib3V0VG9NYXJr
U2xvdygpIHdpbGwgYXNzdW1lIHRoYXQgdGhlIG1hcmtzIHdlcmUgbm90IHN0YWxlIGFzIG9mIGJl
Zm9yZQorICAgIC8vIGJlZ2luTWFya2luZygpLiBIZW5jZSB0aGUgbmVlZCB0byB3aGlwIHRoZSBt
YXJrcyBpbnRvIHNoYXBlLgorICAgIGlmIChhcmVNYXJrc1N0YWxlKCkpCisgICAgICAgIG1fbWFy
a3MuY2xlYXIoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJz
aW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNDI1LDYgKzQ4NiwxNSBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvCiAgICAgbV9hbGxvY2F0b3ItPnJl
bW92ZUJsb2NrKHRoaXMpOwogfQogCit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldENlbGxT
aXplKCkKK3sKK30KKwordm9pZCBNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbigpCit7
CisgICAgbV9uZWVkc0Rlc3RydWN0aW9uID0gaGFuZGxlKCkubmVlZHNEZXN0cnVjdGlvbigpOwor
fQorCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1faW5kZXgg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkBAIC00NDIsMTAgKzUxMiw5
IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2EKICAgICBpZiAobV9h
dHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9u
KTsKICAgICAKLSAgICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rp
b24oKTsKKyAgICBibG9jaygpLnNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAKLSAgICB1bnNp
Z25lZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXpl
OwotICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0
aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9
IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jaygp
KTsKICAgICAKICAgICAvLyBUaGUgbWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJs
eSB3aXRoaW4gdGhpcyByYW5nZS4KICAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lv
biAyMDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsMTEgKzE0MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBz
dG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVB
bGxvY2F0aW5nKCk7IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZv
ciBzb21lIG5vbi1jb2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAg
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMg
bm9uLW51bGwgCi0gICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZh
bHNlIG90aGVyd2lzZS4KLSAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAg
ICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNp
Z25lZCBjZWxsc1BlckJsb2NrKCk7CisgICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25z
dDsKQEAgLTE2NCw4ICsxNjIsMTMgQEAgcHVibGljOgogICAgICAgICB2b2lkIHNldE5ld2x5QWxs
b2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNv
bnN0IHZvaWQqKTsKICAgICAgICAgCi0gICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQo
KSBjb25zdCB7IHJldHVybiAhIW1fbmV3bHlBbGxvY2F0ZWQ7IH0KKyAgICAgICAgaW5saW5lIGJv
b2wgaXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3Q7CiAgICAgICAgICAgICAKKyAgICAgICAg
aW5saW5lIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXAoKTsKKyAgICAgICAgaW5s
aW5lIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQg
cmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwogICAg
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBm
b3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3Qg
RnVuY3RvciYpOwpAQCAtMTg1LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSGFuZGxlKEhlYXAmLCB2b2lkKik7Ci0gICAgICAgICAgICAKKyAgICAg
ICAgCiAgICAgICAgIHRlbXBsYXRlPERlc3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qg
c3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJsZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAg
ICAgICAgICAgIApAQCAtMjMxLDYgKzIzNCw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFya2VkQWxs
b2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IG1faW5kZXgg
eyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQg
bV93ZWFrU2V0OworICAgICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJz
aW9uOwogICAgICAgICAgICAgCiAgICAgICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0
ciB9OwogICAgIH07CkBAIC0yNzgsNyArMjgzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
Ym9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9u
OyB9CiAgICAgCi0gICAgaW5saW5lIHZvaWQgcmVzZXRNYXJraW5nVmVyc2lvbigpOworICAgIC8v
IFRoaXMgaXMgdXN1YWxseSBhIG5vLW9wLCBhbmQgd2UgdXNlIGl0IGFzIGEgbm8tb3AgdGhhdCB0
b3VjaGVzIHRoZSBwYWdlIGluIGlzUGFnZWRPdXQoKS4KKyAgICB2b2lkIHNldE5lZWRzRGVzdHJ1
Y3Rpb24oKTsKKyAgICAKKyAgICB2b2lkIHJlc2V0TWFya3MoKTsKICAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsK
QEAgLTI4OSwxMyArMjk3LDExIEBAIHByaXZhdGU6CiAgICAgQXRvbSogYXRvbXMoKTsKICAgICAg
ICAgCiAgICAgdm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24p
OwotICAgIHZvaWQgY2xlYXJNYXJrcygpOwotICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbik7CiAgICAgdm9pZCBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIAog
ICAgIHZvaWQgbm90ZU1hcmtlZFNsb3coKTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RG
OjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4gbV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3Ry
dWN0aW9uOwogICAgIExvY2sgbV9sb2NrOwpAQCAtNTM0LDE1ICs1NDAsNiBAQCBpbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xl
YXIobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2Nh
dGVkKSB7Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiB7CiAgICAgQVNTRVJUKE1hcmtlZEJsb2Nr
Ojppc0F0b21BbGlnbmVkKHApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsOSArMjcsMTUgQEAKIAogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2lubGluZSB1bnNpZ25lZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2Nr
KCkKK3sKKyAgICByZXR1cm4gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7
Cit9CisKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CkBAIC0zOSwxMSArNDUsMTEgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlKAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IAotICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7Ci0gICAgCiAgICAgaWYg
KGFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCisgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKKyAgICAKICAgICBp
ZiAoYmxvY2suYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtNTcsNiArNjMsMjggQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQwogICAgIHJldHVybiBpc0xpdmUobWFya2luZ1ZlcnNpb24sIHN0YXRpY19jYXN0
PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwogfQogCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc05ld2x5QWxsb2NhdGVkU3RhbGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2FsbG9j
YXRlZFZlcnNpb24gPT0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsK
K30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0
ZWRXaXRoU3dlZXAoKQoreworICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChpc05ld2x5QWxsb2NhdGVkU3RhbGUoKSkgeworICAgICAgICBt
X25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0g
aGVhcCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiBtX25l
d2x5QWxsb2NhdGVkICYmICFpc05ld2x5QWxsb2NhdGVkU3RhbGUoKTsKK30KKwogdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpAQCAtODcs
MTAgKzExNSw1IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQKICAg
ICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotaW5saW5lIHZvaWQgTWFy
a2VkQmxvY2s6OnJlc2V0TWFya2luZ1ZlcnNpb24oKQotewotICAgIG1fbWFya2luZ1ZlcnNpb24g
PSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lv
biAyMDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1MSwyOSArNDUxLDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hy
aW5rKCkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxv
Y2F0ZWQoKQotewotICAgIGZvckVhY2hBbGxvY2F0b3IoCi0gICAgICAgIFsmXSAoTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBpZiAo
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBhbGxvY2F0b3IudGFrZUxhc3RBY3RpdmVCbG9j
aygpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7Ci0g
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhp
c0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwotCi0gICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgZm9yRWFjaEJsb2NrKAotICAgICAgICAgICAg
WyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAKLSAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRp
b24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCi0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9j
YXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwotICAgIH0KLX0KLQogdm9p
ZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKICAgICBpZiAobV9oZWFwLT5vcGVyYXRp
b25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKQEAgLTQ4MywxNiArNDYwLDE1IEBA
IHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBt
X21hcmtpbmdWZXJzaW9uID0gbmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbik7Ci0gICAgICAg
IAotICAgICAgICBpZiAoVU5MSUtFTFkobV9tYXJraW5nVmVyc2lvbiA9PSBpbml0aWFsVmVyc2lv
bikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5k
bGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9jayB2ZXJzaW9ucyB0byBudWxsLgorICAgICAgICBp
ZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNp
b24pKSB7CiAgICAgICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChN
YXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxl
LT5ibG9jaygpLnJlc2V0TWFya2luZ1ZlcnNpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlLT5ibG9jaygpLnJlc2V0TWFya3MoKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgbV9tYXJraW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFy
a2luZ1ZlcnNpb24pOworICAgICAgICAKICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5m
bGlwKCk7CiAgICAgfQpAQCAtNTExLDYgKzQ4NywyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdp
bk1hcmtpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjplbmRNYXJraW5nKCkKIHsKKyAgICBpZiAo
VU5MSUtFTFkobmV4dFZlcnNpb24obV9hbGxvY2F0ZWRWZXJzaW9uKSA9PSBpbml0aWFsVmVyc2lv
bikpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9j
azo6SGFuZGxlKiBoYW5kbGUpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUtPnJlc2V0QWxsb2Nh
dGVkKCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgICAgIAorICAgIG1fYWxsb2NhdGVk
VmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbik7CisgICAgCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247
IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGFyZ2VBbGxv
Y2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOworCisgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xh
cmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFh
bGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOworICAgIH0KKwogICAgIGZvckVhY2hBbGxv
Y2F0b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CiAgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDY3MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAogICAgIHN0YXRp
YyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZy
ZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5p
dGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQg
d2l0aC4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAyOyAv
LyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4gU2V0IHRvIG1ha2Ug
c3VyZSB0aGF0IG5leHRWZXJzaW9uKG51bGxWZXJzaW9uKSAhPSBpbml0aWFsVmVyc2lvbi4KICAg
ICAKLSAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAg
IHN0YXRpYyBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQogICAg
IHsKICAgICAgICAgdmVyc2lvbisrOwogICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lv
bikKLSAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbml0aWFs
VmVyc2lvbjsKICAgICAgICAgcmV0dXJuIHZlcnNpb247CiAgICAgfQogICAgIApAQCAtMTcxLDYg
KzE3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsK
ICAgICAKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bWFya2luZ1ZlcnNpb247IH0KKyAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8TGFy
Z2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdl
QWxsb2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KQEAg
LTIxNyw2ICsyMTgsNyBAQCBwcml2YXRlOgogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIEhlYXBW
ZXJzaW9uIG1fbWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OworICAgIEhlYXBWZXJz
aW9uIG1fYWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90IG1f
Y2FwYWNpdHk7CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcg
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9XVEYv
d3RmL0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsNyBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAotZW51bSBCaXRtYXBBdG9taWNNb2RlIHsKLSAgICAvLyBUaGlzIG1ha2VzIGNv
bmN1cnJlbnRUZXN0QW5kU2V0IGJlaGF2ZSBqdXN0IGxpa2UgdGVzdEFuZFNldC4KLSAgICBCaXRt
YXBOb3RBdG9taWMsCi0KLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IHVz
ZSBjb21wYXJlQW5kU3dhcCwgc28gdGhhdCBpdCdzCi0gICAgLy8gYXRvbWljIGV2ZW4gd2hlbiB1
c2VkIGNvbmN1cnJlbnRseS4KLSAgICBCaXRtYXBBdG9taWMKLX07Ci0KLXRlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUgPSBCaXRtYXBOb3RBdG9t
aWMsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KIGNsYXNzIEJpdG1hcCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgCkBAIC01OSw4ICs1MCw4IEBAIHB1YmxpYzoK
ICAgICBzaXplX3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25zdDsKICAgICB2b2lkIGNs
ZWFyKHNpemVfdCk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwotICAgIGludDY0X3QgZmluZFJ1bk9m
WmVyb3Moc2l6ZV90KSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90ID0gMCkgY29uc3Q7
CisgICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKKyAg
ICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRW1w
dHkoKSBjb25zdDsKICAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7CiAgICAgCkBAIC03MSw2ICs2
MiwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAorICAgIHNpemVfdCBtZXJnZUFu
ZENvdW50KGNvbnN0IEJpdG1hcCYpOworICAgIHNpemVfdCBzZXRBbmRDb3VudChjb25zdCBCaXRt
YXAmKTsKKyAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Qml0bWFwJikgY29uc3Q7CiAgICAgCkBAIC05MCwyNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1h
cCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFs
bCgpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1
cm4gISEoYml0c1tuIC8gd29yZFNpemVdICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQog
Ci10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2Rl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9t
aWNNb2RlLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OnNldChzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9u
ZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBu
LCBib29sIHZhbHVlKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVf
dCBuLCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAt
MTE3LDggKzExMiw4IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QK
ICAgICAgICAgY2xlYXIobik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXpl
X3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90
IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBz
aXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBl
IG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdv
cmRTaXplOwpAQCAtMTM3LDE0ICsxMzIsOSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpj
b25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNN
b2RlID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0K
LSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRU
eXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAv
IHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsK
QEAgLTE1NywxNCArMTQ3LDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
Ym9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50
VGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9
PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAg
ICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBl
IG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdv
cmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAg
LTE3NywyOCArMTYyLDI4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNN
b2QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9p
ZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3Qg
bikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewog
ICAgIGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6Y2xlYXJBbGwoKQogewogICAgIG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJp
dHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBz
dGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3Np
Ymx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3
b3JkU2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3Jk
U2l6ZTsKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZp
bmRSdW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAog
ewogICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcs
OCArMjAyLDggQEAgaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAg
IHJldHVybiAtMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1h
cDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkg
Y29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0
YXJ0KSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0
ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0yMzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3b3JkczsgKytpKQogICAgICAgICBpZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBp
bmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsy
MzMsMzAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJl
dHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWlj
TW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAm
IG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAg
ICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRl
cihjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+
b3RoZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0
b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgot
aW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9y
RWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25z
dAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBX
b3JkVHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTI4Niw4ICsyNzEsMzUgQEAgaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQW5kQ291bnQoY29uc3QgQml0bWFwJiBvdGhlcikKK3sK
KyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkPihiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
c2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENvdW50KGNvbnN0IEJp
dG1hcCYgb3RoZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3JkczsgKytpKQorICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSA9IG90aGVyLmJpdHNbaV0pKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRD
bGVhcihCaXRtYXAmIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7
ICsraSkgeworICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIu
Yml0c1tpXSA9IDA7CisgICAgfQorfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVy
LmJpdHNbaV0pCkBAIC0yOTYsMTQgKzMwOCwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6
b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewog
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6
aGFzaCgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdvcmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290478</attachid>
            <date>2016-10-02 20:15:31 -0700</date>
            <delta_ts>2016-10-03 12:10:27 -0700</delta_ts>
            <desc>it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32200</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg4LDE4ICszODgsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUs
CiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwog
ICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAg
ICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHByZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNvbnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdh
dGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNl
IGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRv
IGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAg
ICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFj
a1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRp
dmVSb290cyk7Ci0gICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZH
OjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0pOwpAQCAtNDYzLDkgKzQ1MywxOSBAQCB2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIFBhcmFsbGVsTW9kZUVu
YWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9yKTsKICAgICAgICAgCiAgICAgICAgIG1fc2xvdFZp
c2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKKworICAgICAgICB7CisgICAgICAgICAgICBUaW1pbmdT
Y29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNv
bnNlcnZhdGl2ZSBzY2FuIik7CisgICAgICAgICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2
YXRpdmVSb290cygqdGhpcyk7CisgICAgICAgICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisgICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZh
dGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsK
KyAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAg
ICAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgIH0KKwogICAgICAgICB2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgICAgICB2
aXNpdFNtYWxsU3RyaW5ncygpOwotICAgICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNl
cnZhdGl2ZVJvb3RzKTsKICAgICAgICAgdmlzaXRQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290Vmlz
aXRvcik7CiAgICAgICAgIHZpc2l0QXJndW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7CiAg
ICAgICAgIHZpc2l0RXhjZXB0aW9uKGhlYXBSb290VmlzaXRvcik7CkBAIC01MjQsMTEgKzUyNCw2
IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVh
ck1hcmtzRm9yRnVsbENvbGxlY3Rpb24oKTsKICAgICAKICAgICB7Ci0gICAgICAgIFRpbWluZ1Nj
b3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2Uu
Y2xlYXJOZXdseUFsbG9jYXRlZCIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgewogICAgICAgICBUaW1pbmdTY29wZSBjbGVh
ck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOwog
ICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDggQEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6
OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHVuc2lnbmVkIGl0ZXJzU2luY2VMYXN0VGltZUNoZWNr
ID0gMDsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgp
OyArK2luZGV4KSB7CiAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9j
a3NbaW5kZXhdOwotICAgICAgICBpZiAoYmxvY2spIHsKLSAgICAgICAgICAgIC8vIEZvcmNlcyB1
cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9jaywgYnV0IGhhcyBubyBzZW1hbnRpYyBl
ZmZlY3QuCi0gICAgICAgICAgICBpZiAoYmxvY2stPmFyZU1hcmtzU3RhbGUoKSkKLSAgICAgICAg
ICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldE1hcmtpbmdWZXJzaW9uKCk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkuc2V0TmVlZHNE
ZXN0cnVjdGlvbigpOwogICAgICAgICArK2l0ZXJzU2luY2VMYXN0VGltZUNoZWNrOwogICAgICAg
ICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPj0gSGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0
aW9uKSB7CiAgICAgICAgICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKIAogTWFya2VkQmxvY2s6Okhh
bmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBtX3dlYWtT
ZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX2FsbG9jYXRlZFZlcnNpb24o
TWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGws
IGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKQEAgLTIw
Nyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0
ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVj
dGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1v
ZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGlm
IChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2Vl
cCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2Rl
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVw
TW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+
KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIAogICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7
CiAgICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4+KCk7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RT
cGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAgIFNldE5ld2x5QWxsb2NhdGVkRnVuY3Rv
ciBmdW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsy
OTcsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2Nh
dG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1h
cmtzKCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNs
ZWFySGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAo
KS0+b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hh
bmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3
bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+
b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAgICAgc3dlZXAoKTsKIH0KIApAQCAt
MzA3LDcgKzMxMSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8K
ICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAgICAgQVNTRVJU
KCFpc0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBp
ZiAoIWhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCkpIHsKICAgICAgICAgLy8gVGhpcyBt
ZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBh
bGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CkBAIC0zNDYsMjQg
KzM1MCw4MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAg
ICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVy
c2lvbikpIHsKLSAgICAgICAgY2xlYXJNYXJrcyhtYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIC8v
IFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRo
aXMgYmxvY2suCi0gICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVj
a0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0
YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChoYW5k
bGUoKS5hbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQoJmhhbmRsZSgpKQorICAgICAgICB8fCAobWFy
a2luZ1ZlcnNpb24gIT0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uCisgICAgICAgICAgICAmJiBN
YXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikgIT0gbWFya2luZ1ZlcnNp
b24pKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBibG9jayBpcyBmdWxs
IGFuZCBpcyBhbHJlYWR5IHJlY29nbml6ZWQgYXMgc3VjaCwgb3IgdGhhdCB0aGUKKyAgICAgICAg
Ly8gYmxvY2sgZGlkIG5vdCBzdXJ2aXZlIHRoZSBwcmV2aW91cyBHQy4gU28sIHdlIGNhbiBjbGVh
ciBtYXJrIGJpdHMgdGhlIG9sZCBmYXNoaW9uZWQKKyAgICAgICAgLy8gd2F5LiBOb3RlIHRoYXQg
aXQncyBwb3NzaWJsZSBmb3Igc3VjaCBhIGJsb2NrIHRvIGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0
aCBhbiB1cC10by0KKyAgICAgICAgLy8gZGF0ZSB2ZXJzaW9uISBJZiBpdCBkb2VzLCB0aGVuIHdl
IHdhbnQgdG8gbGVhdmUgdGhlIG5ld2x5QWxsb2NhdGVkIGFsb25lLCBzaW5jZSB0aGF0CisgICAg
ICAgIC8vIG1lYW5zIHRoYXQgd2UgaGFkIGFsbG9jYXRlZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1w
dHkgYmxvY2sgYnV0IGRpZCBub3QgZmlsbCBpdCB1cCwgc28KKyAgICAgICAgLy8gd2UgY3JlYXRl
ZCBhIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gT25lIHdheSBvciBhbm90aGVyLCB3ZSdsbCB1cGRhdGUgbmV3bHlB
bGxvY2F0ZWQuCisgICAgICAgIEhlYXBWZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24gPSB2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOworICAgICAgICBpZiAoV1RGOjpC
aXRtYXA8YXRvbXNQZXJCbG9jaz4qIG5ld2x5QWxsb2NhdGVkID0gaGFuZGxlKCkubV9uZXdseUFs
bG9jYXRlZC5nZXQoKSkgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50OworICAgICAgICAgICAg
aWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9PSBhbGxvY2F0ZWRWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRlbnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5
QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mIGJpdHMKKyAgICAgICAgICAgICAg
ICAvLyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAg
ICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5tZXJnZUFuZENvdW50KG1fbWFya3Mp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBj
b250ZW50cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1hcmtlZC4gSWYgd2UgZ2V0IHRoZSBmdWxs
IHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGJpdHMgdGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0
ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291bnQgPSBuZXdseUFsbG9j
YXRlZC0+c2V0QW5kQ291bnQobV9tYXJrcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoIWNvdW50KQorICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBu
dWxscHRyOworICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPT0gaGFuZGxlKCkuY2VsbHNQZXJC
bG9jaygpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPnNldElzQWxs
b2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXds
eUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHNldCBiaXRzLiBJZiBpdCdzIHRoZSBm
dWxsIHNldCwgdGhlbiBzZXQgYWxsb2NhdGVkIGFuZCBjbGVhciB0aGUKKyAgICAgICAgICAgIC8v
IGJpdHMuIElmIG5vdCwgdGhlbiBhbGxvY2F0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc3BsYXQgbWFy
a2VkIGludG8gaXQgd2hpbGUgY2xlYXJpbmcKKyAgICAgICAgICAgIC8vIG1hcmtlZC4KKyAgICAg
ICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbV9tYXJrcy5jb3VudCgpOworICAgICAgICAgICAgaWYg
KGNvdW50KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IGhhbmRsZSgpLmNlbGxzUGVy
QmxvY2soKSkgeworICAgICAgICAgICAgICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCgmaGFu
ZGxlKCksIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6Qml0
bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUoKS5tX25l
d2x5QWxsb2NhdGVkLT5zZXRBbmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlKCkubV9hbGxvY2F0ZWRWZXJz
aW9uID0gYWxsb2NhdGVkVmVyc2lvbjsKICAgICB9CisgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsK
KyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJr
aW5nVmVyc2lvbjsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVz
IHRvIG1hcmsgYW55IG9iamVjdCBpbiB0aGlzIGJsb2NrLgorICAgIGhhbmRsZSgpLmFsbG9jYXRv
cigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7
CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQordm9pZCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpyZXNldEFsbG9jYXRlZCgpCiB7Ci0gICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSk7CisgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51
bGxwdHI7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9u
OwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uKQordm9pZCBNYXJrZWRCbG9jazo6cmVzZXRNYXJrcygpCiB7Ci0gICAgbV9tYXJrcy5j
bGVhckFsbCgpOwotICAgIGNsZWFySGFzQW55TWFya2VkKCk7Ci0gICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsKLSAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAgLy8g
V2Ugd2FudCBhYm91dFRvTWFya1Nsb3coKSB0byBzZWUgd2hhdCB0aGUgbWFyayBiaXRzIHdlcmUg
YWZ0ZXIgdGhlIGxhc3QgY29sbGVjdGlvbi4gSXQgdXNlcworICAgIC8vIHRoZSB2ZXJzaW9uIG51
bWJlciB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBtYXJrcyBoYXZpbmcgYWxyZWFkeSBiZWVu
IHN0YWxlIGJlZm9yZQorICAgIC8vIGJlZ2luTWFya2luZygpLCBvciBqdXN0IHN0YWxlIG5vdyB0
aGF0IGJlZ2luTWFya2luZygpIGJ1bXBlZCB0aGUgdmVyc2lvbi4gSWYgd2UgaGF2ZSBhIHZlcnNp
b24KKyAgICAvLyB3cmFwYXJvdW5kLCB0aGVuIHdlIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCBiZWZv
cmUgcmVzZXR0aW5nIHRoZSB2ZXJzaW9uIHRvIG51bGwuIFdoZW4gdGhlCisgICAgLy8gdmVyc2lv
biBpcyBudWxsLCBhYm91dFRvTWFya1Nsb3coKSB3aWxsIGFzc3VtZSB0aGF0IHRoZSBtYXJrcyB3
ZXJlIG5vdCBzdGFsZSBhcyBvZiBiZWZvcmUKKyAgICAvLyBiZWdpbk1hcmtpbmcoKS4gSGVuY2Ug
dGhlIG5lZWQgdG8gd2hpcCB0aGUgbWFya3MgaW50byBzaGFwZS4KKyAgICBpZiAoYXJlTWFya3NT
dGFsZSgpKQorICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAgbV9tYXJraW5nVmVyc2lv
biA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
QEAgLTQyNSw2ICs0ODYsMTEgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZW1vdmVGcm9t
QWxsbwogICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0aGlzKTsKIH0KIAordm9pZCBNYXJr
ZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbigpCit7CisgICAgbV9uZWVkc0Rlc3RydWN0aW9u
ID0gaGFuZGxlKCkubmVlZHNEZXN0cnVjdGlvbigpOworfQorCiB2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXpl
X3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSk7CkBAIC00NDIsMTAgKzUwOCw5IEBAIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZGlkQWRkVG9BbGxvY2EKICAgICBpZiAobV9hdHRyaWJ1dGVzLmNlbGxLaW5kICE9IEhl
YXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fYXR0cmlidXRlcy5kZXN0
cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsKICAgICAKLSAgICBibG9jaygpLm1f
bmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb24oKTsKKyAgICBibG9jaygpLnNldE5l
ZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAKLSAgICB1bnNpZ25lZCBjZWxsc1BlckJsb2NrID0gTWFy
a2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplOwotICAgIGRvdWJsZSBtYXJrQ291bnRC
aWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJs
b2NrKTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxv
Y2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jaygpKTsKICAgICAKICAgICAvLyBUaGUgbWFy
ayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3aXRoaW4gdGhpcyByYW5nZS4KICAg
ICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsMTEg
KzE0MSw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVl
TGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENhbGwgdGhp
cyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0aW9uIHJl
bGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAgIC8vIGFu
ZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAg
Ym9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90
IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2NrKCk7Cisg
ICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkg
Y29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwogICAg
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE2NCw4ICsxNjIsMTMgQEAg
cHVibGljOgogICAgICAgICB2b2lkIHNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAg
ICAgICAgdm9pZCBjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCi0g
ICAgICAgIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1fbmV3
bHlBbGxvY2F0ZWQ7IH0KKyAgICAgICAgaW5saW5lIGJvb2wgaXNOZXdseUFsbG9jYXRlZFN0YWxl
KCkgY29uc3Q7CiAgICAgICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaGFzQW55TmV3bHlB
bGxvY2F0ZWRXaXRoU3dlZXAoKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaGFzQW55TmV3bHlBbGxv
Y2F0ZWQoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgcmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAg
ICAgCiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBJdGVyYXRpb25TdGF0dXMg
Zm9yRWFjaENlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoTGl2ZUNlbGwoY29uc3QgRnVu
Y3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJh
dGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3RvciYpOwpAQCAtMTg1LDcgKzE4
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFuZGxlKEhl
YXAmLCB2b2lkKik7Ci0gICAgICAgICAgICAKKyAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPERl
c3RydWN0aW9uTW9kZT4KICAgICAgICAgRnJlZUxpc3Qgc3dlZXBIZWxwZXJTZWxlY3RTY3JpYmJs
ZU1vZGUoU3dlZXBNb2RlID0gU3dlZXBPbmx5KTsKICAgICAgICAgICAgIApAQCAtMjMxLDYgKzIz
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51
bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OworICAgICAgICAKKyAg
ICAgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uOwogICAgICAgICAgICAgCiAgICAg
ICAgIE1hcmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIH07CkBAIC0yNzgsNyAr
MjgzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9CiAgICAgCi0gICAgaW5saW5lIHZv
aWQgcmVzZXRNYXJraW5nVmVyc2lvbigpOworICAgIC8vIFRoaXMgaXMgdXN1YWxseSBhIG5vLW9w
LCBhbmQgd2UgdXNlIGl0IGFzIGEgbm8tb3AgdGhhdCB0b3VjaGVzIHRoZSBwYWdlIGluIGlzUGFn
ZWRPdXQoKS4KKyAgICB2b2lkIHNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsKKyAgICAKKyAgICB2b2lk
IHJlc2V0TWFya3MoKTsKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBh
dG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTI4OSwxMyArMjk3LDExIEBAIHBy
aXZhdGU6CiAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgCiAgICAgdm9pZCBhYm91dFRvTWFy
a1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwotICAgIHZvaWQgY2xlYXJNYXJrcygp
OwotICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CiAgICAg
dm9pZCBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZFNsb3co
KTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBB
dG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4g
bV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgIExvY2sgbV9sb2Nr
OwpAQCAtNTM0LDE1ICs1NDAsNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpj
bGVhck5lCiAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51bWJlcihw
KSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxv
Y2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZv
aWQqIHApCiB7CiAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
CShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTUgQEAKIAogI2luY2x1
ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2UuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2lubGluZSB1bnNpZ25lZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKCkKK3sKKyAgICByZXR1cm4gTWFya2Vk
U3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7Cit9CisKIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qg
SGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CkBAIC0zOSwx
MSArNDUsMTEgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKAogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIE1hcmtlZEJsb2NrJiBibG9j
ayA9IHRoaXMtPmJsb2NrKCk7Ci0gICAgCiAgICAgaWYgKGFsbG9jYXRvcigpLT5pc0FsbG9jYXRl
ZCh0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgTWFya2VkQmxvY2smIGJs
b2NrID0gdGhpcy0+YmxvY2soKTsKKyAgICAKICAgICBpZiAoYmxvY2suYXJlTWFya3NTdGFsZSht
YXJraW5nVmVyc2lvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTcsNiArNjMsMjgg
QEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQwogICAgIHJldHVybiBp
c0xpdmUobWFya2luZ1ZlcnNpb24sIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwog
fQogCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc05ld2x5QWxsb2NhdGVkU3Rh
bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2FsbG9jYXRlZFZlcnNpb24gPT0gaGVhcCgpLT5v
YmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKK30KKworaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXAoKQoreworICAgIGlm
ICghbV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc05l
d2x5QWxsb2NhdGVkU3RhbGUoKSkgeworICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0
cjsKKyAgICAgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFs
bG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3
bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkICYmICFpc05ld2x5
QWxsb2NhdGVkU3RhbGUoKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CiBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmZvckVhY2hMaXZlQ2VsbChj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewpAQCAtODcsMTAgKzExNSw1IEBAIGlubGluZSBJdGVy
YXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVz
OjpDb250aW51ZTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0TWFya2luZ1Zl
cnNpb24oKQotewotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwy
OSArNDUxLDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKICAgICAgICAgfSk7CiB9CiAK
LXZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGZvckVhY2hB
bGxvY2F0b3IoCi0gICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2sgPSBhbGxvY2F0b3IudGFrZUxhc3RBY3RpdmVCbG9jaygpKQotICAgICAgICAgICAgICAgIGJs
b2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9u
U3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdl
QWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+
Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwotCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAg
ICAgICAgZm9yRWFjaEJsb2NrKAotICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jaykgewotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+
Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAg
ICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMp
Ci0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05l
d2x5QWxsb2NhdGVkKCkpOwotICAgIH0KLX0KLQogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJr
aW5nKCkKIHsKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENv
bGxlY3Rpb24pIHsKQEAgLTQ4MywxNiArNDYwLDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2lu
TWFya2luZygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGlu
dWU7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0gbmV4dFZl
cnNpb24obV9tYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFko
bV9tYXJraW5nVmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8vIE9o
IG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBi
bG9jayB2ZXJzaW9ucyB0byBudWxsLgorICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24o
bV9tYXJraW5nVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CiAgICAgICAgICAgICBmb3JF
YWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5k
bGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya2luZ1Zl
cnNpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya3Mo
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgbV9t
YXJraW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOworICAgICAgICAK
ICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2Nh
dGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQpAQCAtNTExLDYg
KzQ4NywyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjplbmRNYXJraW5nKCkKIHsKKyAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9h
bGxvY2F0ZWRWZXJzaW9uKSA9PSBpbml0aWFsVmVyc2lvbikpIHsKKyAgICAgICAgZm9yRWFjaEJs
b2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKKyAg
ICAgICAgICAgICAgICBoYW5kbGUtPnJlc2V0QWxsb2NhdGVkKCk7CisgICAgICAgICAgICB9KTsK
KyAgICB9CisgICAgICAgIAorICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1f
YWxsb2NhdGVkVmVyc2lvbik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFs
bG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMu
c2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOworCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yIChM
YXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2Nh
dGVkKCkpOworICAgIH0KKwogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAgICAgIFsmXSAoTWFy
a2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAg
ICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTMgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1
dG9mZiAvIHNpemVTdGVwOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxs
VmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4K
LSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUg
dmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICBzdGF0aWMgY29uc3Qg
SGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAyOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBo
ZWFwIHN0YXJ0cyBvdXQgd2l0aC4gU2V0IHRvIG1ha2Ugc3VyZSB0aGF0IG5leHRWZXJzaW9uKG51
bGxWZXJzaW9uKSAhPSBpbml0aWFsVmVyc2lvbi4KICAgICAKLSAgICBIZWFwVmVyc2lvbiBuZXh0
VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHN0YXRpYyBIZWFwVmVyc2lvbiBuZXh0
VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQogICAgIHsKICAgICAgICAgdmVyc2lvbisrOwog
ICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKLSAgICAgICAgICAgIHZlcnNpb24r
KzsKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbml0aWFsVmVyc2lvbjsKICAgICAgICAgcmV0dXJu
IHZlcnNpb247CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKyAgICBI
ZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRW
ZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxs
b2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1bnNp
Z25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFy
Z2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KQEAgLTIxNyw2ICsyMTgsNyBAQCBwcml2YXRl
OgogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNpb24g
eyBpbml0aWFsVmVyc2lvbiB9OworICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lvbiB7
IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgYm9vbCBtX2lz
SXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNl
L1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFwLmgJ
KHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNiArMjcsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBCaXRtYXBB
dG9taWNNb2RlIHsKLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IGJlaGF2
ZSBqdXN0IGxpa2UgdGVzdEFuZFNldC4KLSAgICBCaXRtYXBOb3RBdG9taWMsCi0KLSAgICAvLyBU
aGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IHVzZSBjb21wYXJlQW5kU3dhcCwgc28gdGhh
dCBpdCdzCi0gICAgLy8gYXRvbWljIGV2ZW4gd2hlbiB1c2VkIGNvbmN1cnJlbnRseS4KLSAgICBC
aXRtYXBBdG9taWMKLX07Ci0KLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9t
aWNNb2RlIGF0b21pY01vZGUgPSBCaXRtYXBOb3RBdG9taWMsIHR5cGVuYW1lIFdvcmRUeXBlID0g
dWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUg
PSB1aW50MzJfdD4KIGNsYXNzIEJpdG1hcCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgCkBAIC01OSw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbmV4dFBvc3NpYmx5
VW5zZXQoc2l6ZV90KSBjb25zdDsKICAgICB2b2lkIGNsZWFyKHNpemVfdCk7CiAgICAgdm9pZCBj
bGVhckFsbCgpOwotICAgIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90KSBjb25zdDsKLSAg
ICBzaXplX3QgY291bnQoc2l6ZV90ID0gMCkgY29uc3Q7CisgICAgaW50NjRfdCBmaW5kUnVuT2Za
ZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKKyAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0
YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKICAgICBzaXplX3Qg
aXNGdWxsKCkgY29uc3Q7CiAgICAgCkBAIC03MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYp
IGNvbnN0OwogICAgIAorICAgIHNpemVfdCBtZXJnZUFuZENvdW50KGNvbnN0IEJpdG1hcCYpOwor
ICAgIHNpemVfdCBzZXRBbmRDb3VudChjb25zdCBCaXRtYXAmKTsKKyAgICB2b2lkIHNldEFuZENs
ZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCkBA
IC05MCwyNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jk
cz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgpOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBl
bmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4gISEoYml0c1tuIC8gd29yZFNpemVd
ICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikK
IHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3LDggKzExMiw4IEBAIGlubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICAgICAgY2xlYXIobik7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFz
ayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNp
emU7CkBAIC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTM3LDE0ICsxMzIs
OSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXpl
X3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5k
U2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykK
LSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9
PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3
b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBl
KiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE1NywxNCArMTQ3LDkgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWlj
TW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihz
aXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAg
ICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBC
aXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3
b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3NywyOCArMTYyLDI4IEBAIGlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAm
PSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJB
bGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewogICAg
IG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3Jk
VHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBj
b25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVy
biAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6ZTsKICAgICByZXR1cm4gc3RhcnQg
KyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVu
T2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVuZ3RoKSAK
ICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCArMjAyLDggQEAgaW5saW5lIGludDY0
X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJldHVybiAtMTsKIH0KIAotdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5h
bWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVf
dCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7
CkBAIC0yMzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5
KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNv
bnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBp
ZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1
bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAg
ICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzMsMzAgQEAgaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRz
W2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBi
aXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShj
b25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhj
bHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBm
dW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9y
RWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsK
QEAgLTI4Niw4ICsyNzEsMzUgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
QW5kQ291bnQoY29uc3QgQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCisgICAgICAgIHJlc3VsdCAr
PSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXRzW2ldIHw9IG90aGVyLmJp
dHNbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OnNldEFuZENvdW50KGNvbnN0IEJpdG1hcCYgb3RoZXIpCit7CisgICAgc2l6
ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQor
ICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0
c1tpXSA9IG90aGVyLmJpdHNbaV0pKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICBiaXRzW2ld
ID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
Ym9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytp
KSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC0yOTYsMTQgKzMw
OCwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAm
IG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0Cit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdW5zaWduZWQgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290502</attachid>
            <date>2016-10-03 12:10:27 -0700</date>
            <delta_ts>2016-10-03 15:03:44 -0700</delta_ts>
            <desc>it seems to run simple programs without crashing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>36313</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzg4LDE4ICszODgsOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUs
CiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwog
ICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAg
ICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHByZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMs
ICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNvbnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdh
dGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNl
IGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRv
IGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAg
ICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVh
cDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFj
a1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNh
dmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRp
dmVSb290cyk7Ci0gICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZH
OjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0pOwpAQCAtNDYzLDkgKzQ1MywxOSBAQCB2b2lkIEhl
YXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAgICAgICAgIFBhcmFsbGVsTW9kZUVu
YWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9yKTsKICAgICAgICAgCiAgICAgICAgIG1fc2xvdFZp
c2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKKworICAgICAgICB7CisgICAgICAgICAgICBUaW1pbmdT
Y29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNv
bnNlcnZhdGl2ZSBzY2FuIik7CisgICAgICAgICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2
YXRpdmVSb290cygqdGhpcyk7CisgICAgICAgICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisgICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZh
dGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsK
KyAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAg
ICAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAg
ICAgIH0KKwogICAgICAgICB2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgICAgICB2
aXNpdFNtYWxsU3RyaW5ncygpOwotICAgICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNl
cnZhdGl2ZVJvb3RzKTsKICAgICAgICAgdmlzaXRQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290Vmlz
aXRvcik7CiAgICAgICAgIHZpc2l0QXJndW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7CiAg
ICAgICAgIHZpc2l0RXhjZXB0aW9uKGhlYXBSb290VmlzaXRvcik7CkBAIC01MjQsMTEgKzUyNCw2
IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVh
ck1hcmtzRm9yRnVsbENvbGxlY3Rpb24oKTsKICAgICAKICAgICB7Ci0gICAgICAgIFRpbWluZ1Nj
b3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2Uu
Y2xlYXJOZXdseUFsbG9jYXRlZCIpOwotICAgICAgICBtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgewogICAgICAgICBUaW1pbmdTY29wZSBjbGVh
ck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOwog
ICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2Nr
Kj4mIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisg
ICAgICAgIEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hh
ciogcG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1
LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2
aW91c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAg
ICAgcHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRl
LT5oYW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9u
LCBwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0
ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91
c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAo
dm9pZCogcG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNM
aXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlk
YXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50
ZXIpKQogICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJ
KHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFs
bG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1Myw4IEBAIGJvb2wgTWFya2Vk
QWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFz
dFRpbWVDaGVjayA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxv
Y2tzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
ayA9IG1fYmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgICAgICAv
LyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8g
c2VtYW50aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkp
Ci0gICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJsb2NrLT5ibG9jaygp
LnNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVj
azsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNo
ZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjpt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiAr
NTQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAg
IDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0
ZWRWZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3
IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAg
ICAgCkBAIC0yMDcsNyArMjA4LDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZQogdGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9k
ZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6
U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkK
IHsKLSAgICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICBpZiAoaGFzQW55TmV3bHlBbGxvY2F0
ZWRXaXRoU3dlZXAoKSkKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2Rl
PGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2Nh
dGVkPihzd2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxl
bXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5
QWxsb2NhdGVkPihzd2VlcE1vZGUpOwogfQpAQCAtMjc3LDYgKzI3OCw3IEBAIHZvaWQgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAKICAgICBBU1NFUlQoIW1fbmV3bHlB
bGxvY2F0ZWQpOwogICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6
Qml0bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAo
KS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAKICAgICBTZXROZXdseUFsbG9j
YXRlZEZ1bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKQEAg
LTI5NSwxMCArMjk3LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRp
bmcKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewog
ICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7Ci0gICAgbV9ibG9j
ay0+Y2xlYXJNYXJrcygpOworICAgIG1fYmxvY2stPm1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBt
X2Jsb2NrLT5jbGVhckhhc0FueU1hcmtlZCgpOworICAgIG1fYmxvY2stPm1fbWFya2luZ1ZlcnNp
b24gPSBoZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKTsKICAgICBtX3dlYWtT
ZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKLQotICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsK
KyAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24g
PSBoZWFwKCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOwogICAgIHN3ZWVwKCk7
CiB9CiAKQEAgLTMwNyw3ICszMTEsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZXN1bWVBbGxvCiAgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwog
ICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCi0gICAgaWYgKCFtX25ld2x5QWxsb2NhdGVk
KSB7CisgICAgaWYgKCFoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKSB7CiAgICAgICAg
IC8vIFRoaXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdl
IHN0b3BwZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQpA
QCAtMzQ2LDI0ICszNTAsODEgQEAgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhl
YXBWZQogewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkp
OwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKGFyZU1hcmtzU3RhbGUo
bWFya2luZ1ZlcnNpb24pKSB7Ci0gICAgICAgIGNsZWFyTWFya3MobWFya2luZ1ZlcnNpb24pOwot
ICAgICAgICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9i
amVjdCBpbiB0aGlzIGJsb2NrLgotICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWlj
U2V0QW5kQ2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIGlmICgh
YXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBpZiAoaGFuZGxlKCkuYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKCZoYW5kbGUoKSkKKyAgICAg
ICAgfHwgKG1hcmtpbmdWZXJzaW9uICE9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgorICAgICAg
ICAgICAgJiYgTWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pICE9IG1h
cmtpbmdWZXJzaW9uKSkgeworICAgICAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYmxv
Y2sgaXMgZnVsbCBhbmQgaXMgYWxyZWFkeSByZWNvZ25pemVkIGFzIHN1Y2gsIG9yIHRoYXQgdGhl
CisgICAgICAgIC8vIGJsb2NrIGRpZCBub3Qgc3Vydml2ZSB0aGUgcHJldmlvdXMgR0MuIFNvLCB3
ZSBjYW4gY2xlYXIgbWFyayBiaXRzIHRoZSBvbGQgZmFzaGlvbmVkCisgICAgICAgIC8vIHdheS4g
Tm90ZSB0aGF0IGl0J3MgcG9zc2libGUgZm9yIHN1Y2ggYSBibG9jayB0byBoYXZlIG5ld2x5QWxs
b2NhdGVkIHdpdGggYW4gdXAtdG8tCisgICAgICAgIC8vIGRhdGUgdmVyc2lvbiEgSWYgaXQgZG9l
cywgdGhlbiB3ZSB3YW50IHRvIGxlYXZlIHRoZSBuZXdseUFsbG9jYXRlZCBhbG9uZSwgc2luY2Ug
dGhhdAorICAgICAgICAvLyBtZWFucyB0aGF0IHdlIGhhZCBhbGxvY2F0ZWQgaW4gdGhpcyBwcmV2
aW91c2x5IGVtcHR5IGJsb2NrIGJ1dCBkaWQgbm90IGZpbGwgaXQgdXAsIHNvCisgICAgICAgIC8v
IHdlIGNyZWF0ZWQgYSBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgp
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE9uZSB3YXkgb3IgYW5vdGhlciwgd2UnbGwgdXBk
YXRlIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9u
ID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAg
aWYgKFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+KiBuZXdseUFsbG9jYXRlZCA9IGhhbmRsZSgp
Lm1fbmV3bHlBbGxvY2F0ZWQuZ2V0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudDsKKyAg
ICAgICAgICAgIGlmIChoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPT0gYWxsb2NhdGVkVmVy
c2lvbikgeworICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQg
aW50byBuZXdseUFsbG9jYXRlZC4gSWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAg
ICAgICAgICAgICAgLy8gdGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0
ZWQuCisgICAgICAgICAgICAgICAgY291bnQgPSBuZXdseUFsbG9jYXRlZC0+bWVyZ2VDb3VudEFu
ZENsZWFyKG1fbWFya3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyBSZXBsYWNlIHRoZSBjb250ZW50cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1hcmtlZC4gSWYg
d2UgZ2V0IHRoZSBmdWxsIHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGJpdHMgdGhlbiBkZWxl
dGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291
bnQgPSBuZXdseUFsbG9jYXRlZC0+c2V0Q291bnRBbmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICAgICAgaGFuZGxlKCku
bV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgICAgICAgICBlbHNlIGlmIChjb3VudCA9
PSBoYW5kbGUoKS5jZWxsc1BlckJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5h
bGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2Ygc2V0
IGJpdHMuIElmIGl0J3MgdGhlIGZ1bGwgc2V0LCB0aGVuIHNldCBhbGxvY2F0ZWQgYW5kIGNsZWFy
IHRoZQorICAgICAgICAgICAgLy8gYml0cy4gSWYgbm90LCB0aGVuIGFsbG9jYXRlIG5ld2x5QWxs
b2NhdGVkIGFuZCBzcGxhdCBtYXJrZWQgaW50byBpdCB3aGlsZSBjbGVhcmluZworICAgICAgICAg
ICAgLy8gbWFya2VkLgorICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX21hcmtzLmNvdW50
KCk7CisgICAgICAgICAgICBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQg
PT0gaGFuZGxlKCkuY2VsbHNQZXJCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fbWFy
a3MuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCkt
PnNldElzQWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6
bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQtPnNldEFuZENsZWFyKG1fbWFya3MpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoYW5k
bGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBhbGxvY2F0ZWRWZXJzaW9uOwogICAgIH0KKyAgICBj
bGVhckhhc0FueU1hcmtlZCgpOworICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgbV9t
YXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMg
d2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisg
ICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1w
dHkoJmhhbmRsZSgpLCB0cnVlKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygp
Cit2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVkKCkKIHsKLSAgICBjbGVh
ck1hcmtzKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKKyAgICBt
X25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJr
ZWRTcGFjZTo6bnVsbFZlcnNpb247CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3Mo
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCit2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtz
KCkKIHsKLSAgICBtX21hcmtzLmNsZWFyQWxsKCk7Ci0gICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsK
LSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJr
aW5nVmVyc2lvbjsKKyAgICAvLyBXZSB3YW50IGFib3V0VG9NYXJrU2xvdygpIHRvIHNlZSB3aGF0
IHRoZSBtYXJrIGJpdHMgd2VyZSBhZnRlciB0aGUgbGFzdCBjb2xsZWN0aW9uLiBJdCB1c2VzCisg
ICAgLy8gdGhlIHZlcnNpb24gbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIG1hcmtz
IGhhdmluZyBhbHJlYWR5IGJlZW4gc3RhbGUgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCks
IG9yIGp1c3Qgc3RhbGUgbm93IHRoYXQgYmVnaW5NYXJraW5nKCkgYnVtcGVkIHRoZSB2ZXJzaW9u
LiBJZiB3ZSBoYXZlIGEgdmVyc2lvbgorICAgIC8vIHdyYXBhcm91bmQsIHRoZW4gd2Ugd2lsbCBj
YWxsIHRoaXMgbWV0aG9kIGJlZm9yZSByZXNldHRpbmcgdGhlIHZlcnNpb24gdG8gbnVsbC4gV2hl
biB0aGUKKyAgICAvLyB2ZXJzaW9uIGlzIG51bGwsIGFib3V0VG9NYXJrU2xvdygpIHdpbGwgYXNz
dW1lIHRoYXQgdGhlIG1hcmtzIHdlcmUgbm90IHN0YWxlIGFzIG9mIGJlZm9yZQorICAgIC8vIGJl
Z2luTWFya2luZygpLiBIZW5jZSB0aGUgbmVlZCB0byB3aGlwIHRoZSBtYXJrcyBpbnRvIHNoYXBl
LgorICAgIGlmIChhcmVNYXJrc1N0YWxlKCkpCisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsK
KyAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwogfQogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNDI1LDYgKzQ4NiwxMSBAQCB2b2lkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvCiAgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRo
aXMpOwogfQogCit2b2lkIE1hcmtlZEJsb2NrOjpzZXROZWVkc0Rlc3RydWN0aW9uKCkKK3sKKyAg
ICBtX25lZWRzRGVzdHJ1Y3Rpb24gPSBoYW5kbGUoKS5uZWVkc0Rlc3RydWN0aW9uKCk7Cit9CisK
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2Nh
dG9yKiBhbGxvY2F0b3IsIHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9pbmRleCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKQEAgLTQ0MiwxMCArNTA4LDkgQEAg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYQogICAgIGlmIChtX2F0dHJp
YnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwog
ICAgIAotICAgIGJsb2NrKCkubV9uZWVkc0Rlc3RydWN0aW9uID0gbmVlZHNEZXN0cnVjdGlvbigp
OworICAgIGJsb2NrKCkuc2V0TmVlZHNEZXN0cnVjdGlvbigpOwogICAgIAotICAgIHVuc2lnbmVk
IGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemU7Ci0g
ICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6
YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShP
cHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKCkpOwog
ICAgIAogICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdp
dGhpbiB0aGlzIHJhbmdlLgogICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0
aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7CkBA
IC00NjYsMTIgKzUzMSwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZy
b21BCiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBj
ZWxsKQogewotICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtp
bmdWZXJzaW9uKCksIGNlbGwpOworICAgIHJldHVybiBpc0xpdmUoc3BhY2UoKS0+bWFya2luZ1Zl
cnNpb24oKSwgc3BhY2UoKS0+aXNNYXJraW5nKCksIGNlbGwpOwogfQogCiBib29sIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKIHsKLSAgICByZXR1cm4gaXNM
aXZlQ2VsbCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgcCk7Cisg
ICAgcmV0dXJuIGlzTGl2ZUNlbGwoc3BhY2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgc3BhY2UoKS0+
aXNNYXJraW5nKCksIHApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2NzExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7
CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CitjbGFzcyBNYXJrZWRTcGFjZTsKIAogdHlwZWRlZiB1
aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CkBAIC0xMTAsNiAr
MTExLDcgQEAgcHVibGljOgogCiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkg
Y29uc3Q7CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIE1hcmtl
ZFNwYWNlKiBzcGFjZSgpIGNvbnN0OwogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAg
V2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCkBAIC0xNDEsMTEgKzE0Myw5IEBAIHB1
YmxpYzoKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYpOwogICAg
ICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fu
b25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9z
ZS4KICAgICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlICJuZXdseSBh
bGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vz
c2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAgYm9vbCBjbGVhck5l
d2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7
CisgICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2NrKCk7CisgICAgICAgIAogICAg
ICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAg
ICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIG5l
ZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHNpemVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAg
ICAgIAotICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24sIGNvbnN0IEhlYXBDZWxsKik7Ci0gICAgICAgIGlubGluZSBib29sIGlzTGl2ZUNlbGwoSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICAgICAgaW5saW5lIGJv
b2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29u
c3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IHZvaWQqKTsKIAogICAgICAg
ICBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwo
Y29uc3Qgdm9pZCopOwpAQCAtMTY0LDggKzE2NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQg
c2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3bHlB
bGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBoYXNBbnlOZXds
eUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQorICAgICAg
ICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0
ZWRWZXJzaW9uOyB9CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc05ld2x5QWxsb2Nh
dGVkU3RhbGUoKSBjb25zdDsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBoYXNB
bnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpOworICAgICAgICBpbmxpbmUgYm9vbCBoYXNBbnlO
ZXdseUFsbG9jYXRlZCgpOworICAgICAgICAKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRlZCgp
OworICAgICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlv
blN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChj
b25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CkBAIC0x
ODUsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBI
YW5kbGUoSGVhcCYsIHZvaWQqKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgdGVt
cGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVj
dFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCkBAIC0y
MzEsNiArMjM4LDggQEAgcHVibGljOgogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CisgICAg
ICAgIAorICAgICAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb247CiAgICAgICAgICAg
ICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKQEAg
LTI0MCw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAg
CiAgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAg
ICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBp
c0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGJsb2Nr
Rm9yKGNvbnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODksMTAgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1
Y3Rpb247IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtpbmdWZXJzaW9uKCk7Cisg
ICAgLy8gVGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2UgaXQgYXMgYSBuby1vcCB0
aGF0IHRvdWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAgIHZvaWQgc2V0TmVlZHNE
ZXN0cnVjdGlvbigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJrcygpOwogICAgIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUg
LSAxOwpAQCAtMjg5LDEzICszMDMsMTEgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBhdG9tcygpOwog
ICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBtYXJraW5nVmVy
c2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1hcmtzKEhlYXBW
ZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAg
ICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwogICAgICAgICAKLSAgICBXVEY6OkJpdG1h
cDxhdG9tc1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9tYXJrczsKKyAg
ICBXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPiBtX21hcmtzOwogCiAgICAgYm9vbCBtX25lZWRz
RGVzdHJ1Y3Rpb247CiAgICAgTG9jayBtX2xvY2s7CkBAIC01MzQsMTUgKzU0Niw2IEBAIGlubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAgICBtX25ld2x5QWxsb2NhdGVk
LT5jbGVhcihtX2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgaWYgKG1fbmV3bHlB
bGxvY2F0ZWQpIHsKLSAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKIHsKICAgICBBU1NFUlQoTWFya2Vk
QmxvY2s6OmlzQXRvbUFsaWduZWQocCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMCArMjcsMTYgQEAKIAogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFw
VmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgdW5z
aWduZWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2VsbHNQZXJCbG9jaygpCit7CisgICAgcmV0dXJu
IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgpOworfQorCitpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24s
IGJvb2wgaXNNYXJraW5nLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQoIWlz
RnJlZUxpc3RlZCgpKTsKICAgICAKQEAgLTM5LDIyICs0NSw0OCBAQCBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCi0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKLSAgICAKICAg
ICBpZiAoYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKLSAgICBpZiAoYmxvY2suYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9j
aygpOworICAgIAorICAgIGlmIChibG9jay5tX21hcmtpbmdWZXJzaW9uICE9IG1hcmtpbmdWZXJz
aW9uKSB7CisgICAgICAgIGJvb2wgc3RhbGVNYXJrc0NvbnZleUxpdmVuZXNzID0KKyAgICAgICAg
ICAgIGlzTWFya2luZyAmJiBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24oYmxvY2subV9tYXJraW5n
VmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247CisgICAgICAgIGlmICghc3RhbGVNYXJrc0NvbnZl
eUxpdmVuZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHJldHVy
biBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4gYmxvY2subV9tYXJrcy5nZXQoYmxv
Y2suYXRvbU51bWJlcihjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHAp
CitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9pZCogcCkKIHsKICAgICBp
ZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBpc0xpdmUobWFya2luZ1ZlcnNpb24sIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkp
OworICAgIHJldHVybiBpc0xpdmUobWFya2luZ1ZlcnNpb24sIGlzTWFya2luZywgc3RhdGljX2Nh
c3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWxs
b2NhdGVkVmVyc2lvbiAhPSBzcGFjZSgpLT5hbGxvY2F0ZWRWZXJzaW9uKCk7Cit9CisKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVw
KCkKK3sKKyAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoaXNOZXdseUFsbG9jYXRlZFN0YWxlKCkpIHsKKyAgICAgICAgbV9uZXdseUFsbG9j
YXRlZCA9IG51bGxwdHI7CisgICAgICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IHNwYWNlKCktPmFs
bG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3
bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkICYmICFpc05ld2x5
QWxsb2NhdGVkU3RhbGUoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC04
Nyw5ICsxMTksMTkgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAog
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi1pbmxpbmUgdm9pZCBN
YXJrZWRCbG9jazo6cmVzZXRNYXJraW5nVmVyc2lvbigpCitpbmxpbmUgSGVhcCogTWFya2VkQmxv
Y2s6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKK30KKworaW5saW5l
IE1hcmtlZFNwYWNlKiBNYXJrZWRCbG9jazo6c3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiAm
aGVhcCgpLT5vYmplY3RTcGFjZSgpOworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnNwYWNlKCkgY29uc3QKIHsKLSAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFy
a2VkU3BhY2U6Om51bGxWZXJzaW9uOworICAgIHJldHVybiAmaGVhcCgpLT5vYmplY3RTcGFjZSgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDI5ICs0
NTEsNiBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogICAgICAgICB9KTsKIH0KIAotdm9p
ZCBNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgZm9yRWFjaEFsbG9j
YXRvcigKLSAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKLSAgICAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IGFsbG9jYXRvci50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpCi0gICAgICAgICAgICAgICAgYmxvY2st
PmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwotICAgICAgICB9KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxv
Y2F0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVh
ck5ld2x5QWxsb2NhdGVkKCk7Ci0KLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAg
ICBmb3JFYWNoQmxvY2soCi0gICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgIWJsb2NrLT5jbGVh
ck5ld2x5QWxsb2NhdGVkKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlB
bGxvY2F0ZWQoKSk7Ci0gICAgfQotfQotCiB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmco
KQogewogICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVj
dGlvbikgewpAQCAtNDgzLDE2ICs0NjAsMTUgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJr
aW5nKCkKICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
ICAgICAgICAgICAgIH0pOwogCi0gICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lv
bihtX21hcmtpbmdWZXJzaW9uKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChVTkxJS0VMWShtX21h
cmtpbmdWZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgewotICAgICAgICAgICAgLy8gT2ggbm8h
IFZlcnNpb24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2Nr
IHZlcnNpb25zIHRvIG51bGwuCisgICAgICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX21h
cmtpbmdWZXJzaW9uKSA9PSBpbml0aWFsVmVyc2lvbikpIHsKICAgICAgICAgICAgIGZvckVhY2hC
bG9jaygKICAgICAgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkg
ewotICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lv
bigpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJrcygpOwog
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBtX21hcmtp
bmdWZXJzaW9uID0gbmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbik7CisgICAgICAgIAogICAg
ICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9u
cykKICAgICAgICAgICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAgICB9CkBAIC01MTEsNiArNDg3
LDIzIEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OmVuZE1hcmtpbmcoKQogeworICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX2FsbG9j
YXRlZFZlcnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICBmb3JFYWNoQmxvY2so
CisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgeworICAgICAg
ICAgICAgICAgIGhhbmRsZS0+cmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAgICAgICAgIH0pOworICAg
IH0KKyAgICAgICAgCisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gbmV4dFZlcnNpb24obV9hbGxv
Y2F0ZWRWZXJzaW9uKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2Nh
dGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXpl
KCk7ICsraSkKKyAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2Nh
dGVkKCk7CisKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3IgKExhcmdl
QWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQo
KSk7CisgICAgfQorCiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRB
bGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgIGFs
bG9jYXRvci5lbmRNYXJraW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgJKHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEzICs2NSwxMyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2Zm
IC8gc2l6ZVN0ZXA7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIG51bGxWZXJz
aW9uID0gMDsgLy8gVGhlIHZlcnNpb24gb2YgZnJlc2hseSBhbGxvY2F0ZWQgYmxvY2tzLgotICAg
IHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDE7IC8vIFRoZSB2ZXJz
aW9uIHRoYXQgdGhlIGhlYXAgc3RhcnRzIG91dCB3aXRoLgorICAgIHN0YXRpYyBjb25zdCBIZWFw
VmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDI7IC8vIFRoZSB2ZXJzaW9uIHRoYXQgdGhlIGhlYXAg
c3RhcnRzIG91dCB3aXRoLiBTZXQgdG8gbWFrZSBzdXJlIHRoYXQgbmV4dFZlcnNpb24obnVsbFZl
cnNpb24pICE9IGluaXRpYWxWZXJzaW9uLgogICAgIAotICAgIEhlYXBWZXJzaW9uIG5leHRWZXJz
aW9uKEhlYXBWZXJzaW9uIHZlcnNpb24pCisgICAgc3RhdGljIEhlYXBWZXJzaW9uIG5leHRWZXJz
aW9uKEhlYXBWZXJzaW9uIHZlcnNpb24pCiAgICAgewogICAgICAgICB2ZXJzaW9uKys7CiAgICAg
ICAgIGlmICh2ZXJzaW9uID09IG51bGxWZXJzaW9uKQotICAgICAgICAgICAgdmVyc2lvbisrOwor
ICAgICAgICAgICAgdmVyc2lvbiA9IGluaXRpYWxWZXJzaW9uOwogICAgICAgICByZXR1cm4gdmVy
c2lvbjsKICAgICB9CiAgICAgCkBAIC0xNzEsNiArMTcxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorICAgIEhlYXBW
ZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRlZFZlcnNp
b247IH0KIAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVk
IGxhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zTnVyc2VyeU9mZnNldDsgfQpAQCAtMjE3LDYgKzIxOCw3IEBAIHByaXZhdGU6CiAK
ICAgICBIZWFwKiBtX2hlYXA7CiAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbiB7IGlu
aXRpYWxWZXJzaW9uIH07CisgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uIHsgaW5p
dGlhbFZlcnNpb24gfTsKICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICBib29sIG1faXNJdGVy
YXRpbmc7CiAgICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9CaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkocmV2
aXNpb24gMjA2NzExKQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDE2ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIEJpdG1hcEF0b21p
Y01vZGUgewotICAgIC8vIFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgYmVoYXZlIGp1
c3QgbGlrZSB0ZXN0QW5kU2V0LgotICAgIEJpdG1hcE5vdEF0b21pYywKLQotICAgIC8vIFRoaXMg
bWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgdXNlIGNvbXBhcmVBbmRTd2FwLCBzbyB0aGF0IGl0
J3MKLSAgICAvLyBhdG9taWMgZXZlbiB3aGVuIHVzZWQgY29uY3VycmVudGx5LgotICAgIEJpdG1h
cEF0b21pYwotfTsKLQotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50
MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVp
bnQzMl90PgogY2xhc3MgQml0bWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAKQEAgLTU5LDggKzUwLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNl
dChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2b2lkIGNsZWFy
QWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QpIGNvbnN0OwotICAgIHNp
emVfdCBjb3VudChzaXplX3QgPSAwKSBjb25zdDsKKyAgICBpbnQ2NF90IGZpbmRSdW5PZlplcm9z
KHNpemVfdCBydW5MZW5ndGgpIGNvbnN0OworICAgIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQg
PSAwKSBjb25zdDsKICAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgIHNpemVfdCBpc0Z1
bGwoKSBjb25zdDsKICAgICAKQEAgLTcxLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jJikgY29u
c3Q7CiAgICAgCisgICAgc2l6ZV90IG1lcmdlQ291bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICBz
aXplX3Qgc2V0Q291bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICB2b2lkIHNldEFuZENsZWFyKEJp
dG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCkBAIC05MCwy
NiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0
czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0
b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4K
LWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Omdl
dChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChz
aXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4gISEoYml0c1tuIC8gd29yZFNpemVdICYgKG9u
ZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
Qml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChzaXplX3Qg
bikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKIHsKICAg
ICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3LDggKzExMiw4IEBAIGlubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICAgICAgY2xlYXIobik7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9u
ZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBA
IC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFy
KHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFy
KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7
CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTM3LDE0ICsxMzIsOSBAQCBp
bmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRv
bWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBi
b29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNp
emVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAg
ICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRt
YXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6
ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3Jk
UHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE1NywxNCArMTQ3LDkgQEAgaW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3Qg
bikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJl
dHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBB
dG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7
CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRy
ID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3NywyOCArMTYyLDI4IEBAIGlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9u
ZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewogICAgIG1lbXNl
dChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46
Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAog
ewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0
YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6ZTsKICAgICByZXR1cm4gc3RhcnQgKyAxOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgp
IGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citp
bmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJv
cyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAg
ICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCArMjAyLDggQEAgaW5saW5lIGludDY0X3QgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJldHVybiAtMTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3Jk
VHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVfdCByZXN1
bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0y
MzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29u
c3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAoYml0
c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0Z1
bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
aWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzMsMzAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29y
ZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBiaXRzW2ld
ICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBC
aXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShj
b25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7
ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUg
V29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBj
b25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNl
dEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTI4
Niw4ICsyNzEsMzkgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAog
ICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQ291bnRB
bmRDbGVhcihCaXRtYXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICByZXN1bHQgKz0gV1RG
OjpiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSB8PSBvdGhlci5iaXRzW2ld
KSk7CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citp
bmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldENvdW50QW5kQ2xl
YXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0
Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gPSBvdGhlci5iaXRzW2ldKSk7Cisg
ICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90
aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAg
ICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNv
bnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC0y
OTYsMTQgKzMxMiwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25z
dCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0
b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5zaWduZWQg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdW5z
aWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAg
dW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyAr
K2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290526</attachid>
            <date>2016-10-03 15:03:44 -0700</date>
            <delta_ts>2016-10-03 17:09:58 -0700</delta_ts>
            <desc>it can run splay without crashing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49657</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY3MTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBACiAJCTBGNjRCMjc5MUE3OTU3
QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3NzFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3Bw
ICovOyB9OwogCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjc4MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovOyB9OworCQkwRjY2NENFODFE
QTMwNEVGMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjRDRTcxREEzMDRFRDAwQjAwQTExIC8q
IENvZGVCbG9ja1NldElubGluZXMuaCAqLzsgfTsKIAkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0Yx
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1
bGxCeXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUMyMTgzNTY3MkIwMEQw
MTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9OwpAQCAtMjY5Nyw2ICsyNjk4LDcgQEAK
IAkJMEY2NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckFyZ0lubGluZXMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJBcmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja1NldElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzIxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuY3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzAzLDYgKzUzMDUsNyBAQAogCQkJ
CTBGMUMzREQ5MUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCAqLywKIAkJCQkwRkQ4QTMx
MTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4QTMxMjE3
RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCisJCQkJMEY2NjRDRTcxREEzMDRF
RDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKIAkJCQkxNDZCMTREQjEyRUI1
QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYyMTJF
QjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCTJBN0E1OEVFMTgw
OEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLywKQEAgLTc5MTcsNiArNzkyMCw3IEBACiAJ
CQkJQkMxOEM0MUMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxl
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY2NENFODFEQTMwNEVGMDBCMDBBMTEgLyog
Q29kZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY3REEwRTE5QkND
OTAwODA2NkREIC8qIEpTQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURF
NDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUREODRB
MThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgog
I2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUg
IkNvbXBhY3RKSVRDb2RlTWFwLmgiCkBAIC03Niw2ICs3NSw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOworY2xhc3MgQ29kZUJsb2NrU2V0Owog
Y2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTEzMTEsMzggKzEzMTEsNiBAQCBpbmxpbmUgdm9pZCBDb2Rl
QmxvY2s6OmNsZWFyVmlzaXRXZWFrbHlICiAgICAgbV92aXNpdFdlYWtseUhhc0JlZW5DYWxsZWQu
c3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQogCi1pbmxpbmUgdm9p
ZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5k
aWRhdGVDb2RlQmxvY2spCi17Ci0gICAgQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKLSAgICAv
LyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFuZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5
IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCi0gICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0ZUNvZGVCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhp
cyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2UgbmFzdHkgY2FzZXMgaW4gb25lIGdvLgotICAgIC8v
IDAgKyAxID0gMQotICAgIC8vIC0xICsgMSA9IDAKLSAgICBpZiAodmFsdWUgKyAxIDw9IDEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8
Q29kZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJsb2NrKTsgCi0gICAgaWYgKCFtX29sZENvZGVCbG9j
a3MuY29udGFpbnMoY29kZUJsb2NrKSAmJiAhbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVC
bG9jaykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOwot
fQotCi1pbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENv
ZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBUcnkgdG8gcmVjb3ZlciBncmFjZWZ1bGx5IGlmIHdlIGZvcmdldCB0byBl
eGVjdXRlIGEgYmFycmllciBmb3IgYQotICAgIC8vIENvZGVCbG9jayB0aGF0IGRvZXMgdmFsdWUg
cHJvZmlsaW5nLiBUaGlzIGlzIHByb2JhYmx5IG92ZXJraWxsLCBidXQgd2UKLSAgICAvLyBoYXZl
IGFsd2F5cyBkb25lIGl0LgotICAgIEhlYXA6OmhlYXAoY29kZUJsb2NrKS0+d3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7Ci0KLSAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5hZGQoY29kZUJsb2NrKTsK
LX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1
dGFibGU6OmZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYmIGZ1bmN0b3IpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1Nl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0LmNwcAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDE2ICsxMDcsMTcgQEAgYm9v
bCBDb2RlQmxvY2tTZXQ6OmNvbnRhaW5zKGNvbnN0IExvY2tIbwogICAgIHJldHVybiBtX29sZENv
ZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSB8fCBtX25ld0NvZGVCbG9ja3MuY29udGFpbnMo
Y29kZUJsb2NrKSB8fCBtX2N1cnJlbnRseUV4ZWN1dGluZy5jb250YWlucyhjb2RlQmxvY2spOwog
fQogCi12b2lkIENvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2NrcyhIZWFwKiBoZWFwKQordm9pZCBDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJl
bnRseUV4ZWN1dGluZyhIZWFwKiBoZWFwKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xv
Y2spOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZW1lbWJlcmluZyAiLCBt
X2N1cnJlbnRseUV4ZWN1dGluZy5zaXplKCksICIgY29kZSBibG9ja3MuXG4iKTsKICAgICBmb3Ig
KENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jdXJyZW50bHlFeGVjdXRpbmcpCiAgICAgICAgIGhl
YXAtPndyaXRlQmFycmllcihjb2RlQmxvY2spOworfQogCi0gICAgLy8gSXQncyBzYWZlIHRvIGNs
ZWFyIHRoaXMgc2V0IGJlY2F1c2Ugd2Ugd29uJ3QgZGVsZXRlIHRoZSBDb2RlQmxvY2tzCi0gICAg
Ly8gaW4gaXQgdW50aWwgdGhlIG5leHQgR0MsIGFuZCB3ZSdsbCByZWNvbXB1dGUgaXQgYXQgdGhh
dCB0aW1lLgordm9pZCBDb2RlQmxvY2tTZXQ6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCkKK3sK
ICAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjA2NzExKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIEFkZCBhbGwgY3VycmVudGx5IGV4
ZWN1dGluZyBDb2RlQmxvY2tzIHRvIHRoZSByZW1lbWJlcmVkIHNldCB0byBiZSAKICAgICAvLyBy
ZS1zY2FubmVkIGR1cmluZyB0aGUgbmV4dCBjb2xsZWN0aW9uLgotICAgIHZvaWQgd3JpdGVCYXJy
aWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcyhIZWFwKik7CisgICAgdm9pZCB3cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCopOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRs
eUV4ZWN1dGluZygpOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBMb2NrSG9sZGVyJiwgdm9p
ZCogY2FuZGlkYXRlQ29kZUJsb2NrKTsKICAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9s
b2NrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0SW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3Qg
TG9ja0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCit7CisgICAgQVNT
RVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFu
ZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCisg
ICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0
ZUNvZGVCbG9jayk7CisgICAgCisgICAgLy8gVGhpcyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2Ug
bmFzdHkgY2FzZXMgaW4gb25lIGdvLgorICAgIC8vIDAgKyAxID0gMQorICAgIC8vIC0xICsgMSA9
IDAKKyAgICBpZiAodmFsdWUgKyAxIDw9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJs
b2NrKTsgCisgICAgaWYgKCFtX29sZENvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSAmJiAh
bV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOworfQorCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tT
ZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAg
IGlmICghY29kZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2N1cnJlbnRseUV4ZWN1
dGluZy5hZGQoY29kZUJsb2NrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHJl
dmlzaW9uIDIwNjcxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNv
bnNlcnZhdGl2ZVJvb3RzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJD
b2RlQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwVXRpbC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJSb3V0aW5lU2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJD
b25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAi
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzg4LDE4ICszODksOCBAQCB2b2lkIEhlYXA6
Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVh
cFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwogICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3Rz
IGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAgICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHBy
ZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNv
bnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdhdGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVm
b3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNlIGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBn
YXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJl
bmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAgICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252
ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBz
Y2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBz
dGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAg
IGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cyk7Ci0gICAgICAgICAgICBnYXRo
ZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZHOjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0p
OwpAQCAtNDYzLDkgKzQ1NCwyNCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFy
dFRpbWUsCiAgICAgICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9y
KTsKICAgICAgICAgCiAgICAgICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKKwor
ICAgICAgICB7CisgICAgICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Nj
b3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7CisgICAgICAg
ICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygqdGhpcyk7CisgICAgICAg
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgICAg
ICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3Rh
Y2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGdhdGhlckpTU3RhY2tS
b290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVy
Um9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVS
b290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdl
IHdhbnQgdG8gZG8gdGhpcyB0byBjb25zZXJ2YXRpdmVseSBlbnN1cmUgdGhhdCB3ZSByZXNjYW4g
YW55IGNvZGUgYmxvY2tzIHRoYXQgYXJlCisgICAgICAgICAgICAvLyBydW5uaW5nIHJpZ2h0IG5v
dy4gSG93ZXZlciwgd2UgbmVlZCB0byBiZSBzdXJlIHRvIGRvIGl0ICphZnRlciogd2UgbWFyayB0
aGUgY29kZSBibG9jaworICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBrbm93IGZvciBzdXJlIGlm
IGl0IHJlYWxseSBuZWVkcyBhIGJhcnJpZXIuCisgICAgICAgICAgICB3cml0ZUJhcnJpZXJDdXJy
ZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgICAgIH0KKwogICAgICAgICB2aXNpdEV4
dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgICAgICB2aXNpdFNtYWxsU3RyaW5ncygpOwotICAg
ICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKICAgICAgICAg
dmlzaXRQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0QXJn
dW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0RXhjZXB0aW9uKGhl
YXBSb290VmlzaXRvcik7CkBAIC01MjQsMTEgKzUzMCw2IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJr
aW5nKCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENvbGxlY3Rpb24o
KTsKICAgICAKICAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRU
aW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuY2xlYXJOZXdseUFsbG9jYXRlZCIpOwot
ICAgICAgICBtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAg
Ci0gICAgewogICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMs
ICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOwogICAgICAgICBtX29iamVjdFNwYWNlLmJl
Z2luTWFya2luZygpOwogICAgIH0KQEAgLTEwNjAsNiArMTA2MSw3IEBAIE5FVkVSX0lOTElORSB2
b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKIAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBl
cigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKKyAg
ICBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAogICAgIHByZXBhcmVGb3JB
bGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwpAQCAtMTIwMyw3ICsx
MjA1LDEyIEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCkKIAogdm9pZCBI
ZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCkKIHsKLSAgICBt
X2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhp
cyk7CisgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcodGhp
cyk7Cit9CisKK3ZvaWQgSGVhcDo6Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCkK
K3sKKyAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CiB9CiAKIHZv
aWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKKyAgICB2b2lkIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcygp
OwogICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFr
UmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDY3
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IEhhc2hT
ZXQ8TWFya2VkQmxvY2sqPiYgc2V0ID0gaGVhcC5vYmplY3RTcGFjZSgpLmJsb2NrcygpLnNldCgp
OwogICAgICAgICAKKyAgICAgICAgQVNTRVJUKGhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmco
KSk7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzTWFya2luZyA9IHRydWU7CisgICAgICAg
IAogICAgICAgICBjaGFyKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3NlZFBvaW50
ZXIpOwogICAgICAgICAKICAgICAgICAgLy8gSXQgY291bGQgcG9pbnQgdG8gYSBsYXJnZSBhbGxv
Y2F0aW9uLgpAQCAtODUsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgJiYgc2V0
LmNvbnRhaW5zKHByZXZpb3VzQ2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICYmIHByZXZpb3Vz
Q2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpID09IEhlYXBDZWxsOjpBdXhpbGlhcnkpIHsK
ICAgICAgICAgICAgICAgICBwcmV2aW91c1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHJl
dmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxBbGlnbihwcmV2aW91c1BvaW50ZXIpKTsKLSAg
ICAgICAgICAgICAgICBpZiAocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwo
bWFya2luZ1ZlcnNpb24sIHByZXZpb3VzUG9pbnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01h
cmtpbmcsIHByZXZpb3VzUG9pbnRlcikpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMocHJldmlv
dXNQb2ludGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTksNyArMTAyLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgYXV0byB0cnlQ
b2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwb2ludGVyKSkKKyAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwobWFya2luZ1ZlcnNpb24sIGlz
TWFya2luZywgcG9pbnRlcikpCiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAg
ICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDgg
QEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHVuc2lnbmVk
IGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOwotICAgICAgICBpZiAoYmxvY2spIHsK
LSAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9j
aywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZlY3QuCi0gICAgICAgICAgICBpZiAoYmxvY2stPmFy
ZU1hcmtzU3RhbGUoKSkKLSAgICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldE1hcmtp
bmdWZXJzaW9uKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAg
YmxvY2stPmJsb2NrKCkuc2V0TmVlZHNEZXN0cnVjdGlvbigpOwogICAgICAgICArK2l0ZXJzU2lu
Y2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPj0g
SGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICBkb3VibGUgY3VycmVu
dFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzExKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0
cnlDcmUKIAogTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJs
b2NrU3BhY2UpCiAgICAgOiBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisg
ICAgLCBtX2FsbG9jYXRlZFZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAg
IG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZt
KCksICp0aGlzKTsKICAgICAKQEAgLTIwNyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0
eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1v
ZGUgc3dlZXBNb2RlKQogewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNB
bnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
SGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIAogICAgIEFT
U0VSVCghbV9uZXdseUFsbG9jYXRlZCk7CiAgICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgbV9hbGxvY2F0ZWRW
ZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAg
IFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciBmdW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxs
KGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsyOTcsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNl
KTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVh
ckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFySGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+
bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigp
OwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXds
eUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxs
b2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7
CiAgICAgc3dlZXAoKTsKIH0KIApAQCAtMzA3LDcgKzMxMSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8KICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9j
YXRlZCh0aGlzKSk7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1f
bmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBpZiAoIWhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVw
KCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhl
IGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKICAgICB9CkBAIC0zNDYsMjQgKzM1MCw4MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91
dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2Uo
KS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAo
YXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpIHsKLSAgICAgICAgY2xlYXJNYXJrcyhtYXJr
aW5nVmVyc2lvbik7Ci0gICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMg
dG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCi0gICAgICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1
ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQoJmhh
bmRsZSgpKQorICAgICAgICB8fCAobWFya2luZ1ZlcnNpb24gIT0gTWFya2VkU3BhY2U6Om51bGxW
ZXJzaW9uCisgICAgICAgICAgICAmJiBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5n
VmVyc2lvbikgIT0gbWFya2luZ1ZlcnNpb24pKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkga25v
dyB0aGF0IHRoZSBibG9jayBpcyBmdWxsIGFuZCBpcyBhbHJlYWR5IHJlY29nbml6ZWQgYXMgc3Vj
aCwgb3IgdGhhdCB0aGUKKyAgICAgICAgLy8gYmxvY2sgZGlkIG5vdCBzdXJ2aXZlIHRoZSBwcmV2
aW91cyBHQy4gU28sIHdlIGNhbiBjbGVhciBtYXJrIGJpdHMgdGhlIG9sZCBmYXNoaW9uZWQKKyAg
ICAgICAgLy8gd2F5LiBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3Igc3VjaCBhIGJsb2NrIHRv
IGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0aCBhbiB1cC10by0KKyAgICAgICAgLy8gZGF0ZSB2ZXJz
aW9uISBJZiBpdCBkb2VzLCB0aGVuIHdlIHdhbnQgdG8gbGVhdmUgdGhlIG5ld2x5QWxsb2NhdGVk
IGFsb25lLCBzaW5jZSB0aGF0CisgICAgICAgIC8vIG1lYW5zIHRoYXQgd2UgaGFkIGFsbG9jYXRl
ZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1wdHkgYmxvY2sgYnV0IGRpZCBub3QgZmlsbCBpdCB1cCwg
c28KKyAgICAgICAgLy8gd2UgY3JlYXRlZCBhIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBtX21h
cmtzLmNsZWFyQWxsKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT25lIHdheSBvciBhbm90
aGVyLCB3ZSdsbCB1cGRhdGUgbmV3bHlBbGxvY2F0ZWQuCisgICAgICAgIEhlYXBWZXJzaW9uIGFs
bG9jYXRlZFZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lv
bigpOworICAgICAgICBpZiAoV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4qIG5ld2x5QWxsb2Nh
dGVkID0gaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZC5nZXQoKSkgeworICAgICAgICAgICAgc2l6
ZV90IGNvdW50OworICAgICAgICAgICAgaWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9
PSBhbGxvY2F0ZWRWZXJzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRl
bnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0
IG9mIGJpdHMKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBh
bmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVk
LT5tZXJnZUNvdW50QW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIG5ld2x5QWxsb2NhdGVkIHdp
dGggbWFya2VkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mCisgICAgICAgICAgICAgICAgLy8g
Yml0cyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAg
ICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5zZXRDb3VudEFuZENsZWFyKG1fbWFy
a3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAg
ICAgICBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGNvdW50ID09IGhhbmRsZSgpLmNlbGxzUGVyQmxvY2soKSkgeworICAgICAgICAgICAg
ICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCgmaGFuZGxlKCksIHRydWUp
OworICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ291bnQgdGhl
IG51bWJlciBvZiBzZXQgYml0cy4gSWYgaXQncyB0aGUgZnVsbCBzZXQsIHRoZW4gc2V0IGFsbG9j
YXRlZCBhbmQgY2xlYXIgdGhlCisgICAgICAgICAgICAvLyBiaXRzLiBJZiBub3QsIHRoZW4gYWxs
b2NhdGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNwbGF0IG1hcmtlZCBpbnRvIGl0IHdoaWxlIGNsZWFy
aW5nCisgICAgICAgICAgICAvLyBtYXJrZWQuCisgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IG1fbWFya3MuY291bnQoKTsKKyAgICAgICAgICAgIGlmIChjb3VudCkgeworICAgICAgICAgICAg
ICAgIGlmIChjb3VudCA9PSBoYW5kbGUoKS5jZWxsc1BlckJsb2NrKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUo
KS5hbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGUoKS5tX25ld2x5QWxs
b2NhdGVkID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4oKTsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZC0+c2V0QW5kQ2xl
YXIobV9tYXJrcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9IGFsbG9jYXRlZFZlcnNpb247
CiAgICAgfQorICAgIGNsZWFySGFzQW55TWFya2VkKCk7CisgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAgCisgICAg
Ly8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4g
dGhpcyBibG9jay4KKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJ
c01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOwogfQogCi12b2lkIE1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKCkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzZXRBbGxvY2F0ZWQo
KQogewotICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJz
aW9uKCkpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVk
VmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAotdm9pZCBNYXJrZWRCbG9j
azo6Y2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKK3ZvaWQgTWFya2VkQmxv
Y2s6OnJlc2V0TWFya3MoKQogewotICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKLSAgICBjbGVhckhh
c0FueU1hcmtlZCgpOwotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9tYXJraW5n
VmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIC8vIFdlIHdhbnQgYWJvdXRUb01hcmtTbG93
KCkgdG8gc2VlIHdoYXQgdGhlIG1hcmsgYml0cyB3ZXJlIGFmdGVyIHRoZSBsYXN0IGNvbGxlY3Rp
b24uIEl0IHVzZXMKKyAgICAvLyB0aGUgdmVyc2lvbiBudW1iZXIgdG8gZGlzdGluZ3Vpc2ggYmV0
d2VlbiB0aGUgbWFya3MgaGF2aW5nIGFscmVhZHkgYmVlbiBzdGFsZSBiZWZvcmUKKyAgICAvLyBi
ZWdpbk1hcmtpbmcoKSwgb3IganVzdCBzdGFsZSBub3cgdGhhdCBiZWdpbk1hcmtpbmcoKSBidW1w
ZWQgdGhlIHZlcnNpb24uIElmIHdlIGhhdmUgYSB2ZXJzaW9uCisgICAgLy8gd3JhcGFyb3VuZCwg
dGhlbiB3ZSB3aWxsIGNhbGwgdGhpcyBtZXRob2QgYmVmb3JlIHJlc2V0dGluZyB0aGUgdmVyc2lv
biB0byBudWxsLiBXaGVuIHRoZQorICAgIC8vIHZlcnNpb24gaXMgbnVsbCwgYWJvdXRUb01hcmtT
bG93KCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgbWFya3Mgd2VyZSBub3Qgc3RhbGUgYXMgb2YgYmVm
b3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCkuIEhlbmNlIHRoZSBuZWVkIHRvIHdoaXAgdGhlIG1h
cmtzIGludG8gc2hhcGUuCisgICAgaWYgKGFyZU1hcmtzU3RhbGUoKSkKKyAgICAgICAgbV9tYXJr
cy5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZl
cnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00MjUsNiArNDg2LDExIEBAIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG8KICAgICBtX2FsbG9jYXRvci0+
cmVtb3ZlQmxvY2sodGhpcyk7CiB9CiAKK3ZvaWQgTWFya2VkQmxvY2s6OnNldE5lZWRzRGVzdHJ1
Y3Rpb24oKQoreworICAgIG1fbmVlZHNEZXN0cnVjdGlvbiA9IGhhbmRsZSgpLm5lZWRzRGVzdHJ1
Y3Rpb24oKTsKK30KKwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRv
cihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VS
VChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwpAQCAtNDQy
LDEwICs1MDgsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhCiAg
ICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbik7CiAgICAgCi0gICAgYmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24gPSBuZWVk
c0Rlc3RydWN0aW9uKCk7CisgICAgYmxvY2soKS5zZXROZWVkc0Rlc3RydWN0aW9uKCk7CiAgICAg
Ci0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQg
LyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFy
a2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgZG91YmxlIG1hcmtD
b3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxz
UGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUg
Y29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCiAgICAgUkVMRUFTRV9BU1NFUlQobWFya0Nv
dW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWluKCkpKTsKQEAgLTQ2NiwxMiArNTMxLDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkUmVtb3ZlRnJvbUEKIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29u
c3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgY2VsbCk7CisgICAgcmV0dXJuIGlzTGl2ZShzcGFj
ZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgY2VsbCk7CiB9CiAK
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQogewot
ICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVy
c2lvbigpLCBwKTsKKyAgICByZXR1cm4gaXNMaXZlQ2VsbChzcGFjZSgpLT5tYXJraW5nVmVyc2lv
bigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAy
MDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsK
IGNsYXNzIEpTQ2VsbDsKIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKK2NsYXNzIE1hcmtlZFNwYWNl
OwogCiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lv
bjsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgICAg
ICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFZNKiB2bSgpIGNv
bnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAKQEAgLTE0MSwx
MSArMTQzLDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IEZy
ZWVMaXN0Jik7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VtZUFsbG9jYXRpbmcoKTsgLy8gQ2FsbCB0
aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9yIHNvbWUgbm9uLWNvbGxlY3Rpb24g
cmVsYXRlZCBwdXJwb3NlLgogICAgICAgICAgICAgCi0gICAgICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwIHdhcyBub24tbnVsbCAKLSAgICAgICAgLy8g
YW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAg
ICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIAogICAgICAgICBzaXpl
X3QgY2VsbFNpemUoKTsKKyAgICAgICAgaW5saW5lIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2soKTsK
KyAgICAgICAgCiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMo
KSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTU0LDggKzE1NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6
ZSgpOwogICAgICAgICAgICAgCi0gICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKLSAgICAgICAgaW5saW5lIGJvb2wg
aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCopOworICAg
ICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wg
aXNNYXJraW5nLCBjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVD
ZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9p
ZCopOwogCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJv
b2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CkBAIC0xNjQsOCArMTY0LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZv
aWQgY2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBi
b29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2Nh
dGVkOyB9CisgICAgICAgIEhlYXBWZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FsbG9jYXRlZFZlcnNpb247IH0KKyAgICAgICAgCisgICAgICAgIGlubGluZSBib29s
IGlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0OwogICAgICAgICAgICAgCisgICAgICAgIGlu
bGluZSBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCk7CisgICAgICAgIGlubGlu
ZSBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHJl
c2V0QWxsb2NhdGVkKCk7CisgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKQEAgLTE4NSw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEhhbmRsZShIZWFwJiwgdm9pZCopOwotICAgICAgICAgICAgCisgICAgICAg
IAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAg
ICAgICAgICAKQEAgLTIzMSw2ICsyMzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgICAgIHNpemVfdCBtX2luZGV4IHsg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1f
d2Vha1NldDsKKyAgICAgICAgCisgICAgICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lv
bjsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIg
fTsKICAgICB9OwpAQCAtMjQwLDYgKzI0OSw4IEBAIHB1YmxpYzoKICAgICBIYW5kbGUmIGhhbmRs
ZSgpOwogICAgICAgICAKICAgICBWTSogdm0oKSBjb25zdDsKKyAgICBpbmxpbmUgSGVhcCogaGVh
cCgpIGNvbnN0OworICAgIGlubGluZSBNYXJrZWRTcGFjZSogc3BhY2UoKSBjb25zdDsKIAogICAg
IHN0YXRpYyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBNYXJr
ZWRCbG9jayogYmxvY2tGb3IoY29uc3Qgdm9pZCopOwpAQCAtMjc4LDcgKzI4OSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIAotICAgIGlubGluZSB2b2lkIHJlc2V0TWFya2lu
Z1ZlcnNpb24oKTsKKyAgICAvLyBUaGlzIGlzIHVzdWFsbHkgYSBuby1vcCwgYW5kIHdlIHVzZSBp
dCBhcyBhIG5vLW9wIHRoYXQgdG91Y2hlcyB0aGUgcGFnZSBpbiBpc1BhZ2VkT3V0KCkuCisgICAg
dm9pZCBzZXROZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgCisgICAgdm9pZCByZXNldE1hcmtzKCk7
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1h
c2sgPSBhdG9tU2l6ZSAtIDE7CkBAIC0yODksMTMgKzMwMywxMSBAQCBwcml2YXRlOgogICAgIEF0
b20qIGF0b21zKCk7CiAgICAgICAgIAogICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKLSAgICB2b2lkIGNsZWFyTWFya3MoKTsKLSAgICB2b2lkIGNs
ZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNB
bnlNYXJrZWQoKTsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CiAgICAgICAgIAot
ICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90
PiBtX21hcmtzOworICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbWFya3M7CiAKICAg
ICBib29sIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICBMb2NrIG1fbG9jazsKQEAgLTUzNCwxNSAr
NTQ2LDYgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIG1f
bmV3bHlBbGxvY2F0ZWQtPmNsZWFyKG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAg
ICBpZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogewogICAg
IEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2
NzExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxNiBAQAogCiAjaW5jbHVkZSAiTWFya2VkQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFj
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKK2lubGluZSB1bnNpZ25lZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKCkK
K3sKKyAgICByZXR1cm4gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7Cit9
CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewog
ICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogICAgIApAQCAtMzksMjIgKzQ1LDQ4IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9j
aygpOwotICAgIAogICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGlmIChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtp
bmdWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE1hcmtlZEJsb2NrJiBibG9j
ayA9IHRoaXMtPmJsb2NrKCk7CisgICAgCisgICAgaWYgKGJsb2NrLm1fbWFya2luZ1ZlcnNpb24g
IT0gbWFya2luZ1ZlcnNpb24pIHsKKyAgICAgICAgYm9vbCBzdGFsZU1hcmtzQ29udmV5TGl2ZW5l
c3MgPQorICAgICAgICAgICAgaXNNYXJraW5nICYmIE1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbihi
bG9jay5tX21hcmtpbmdWZXJzaW9uKSA9PSBtYXJraW5nVmVyc2lvbjsKKyAgICAgICAgaWYgKCFz
dGFsZU1hcmtzQ29udmV5TGl2ZW5lc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogCi0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5t
X21hcmtzLmdldChibG9jay5hdG9tTnVtYmVyKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwg
Y29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNl
bGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCB2b2lk
KiBwKQogewogICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3Qg
SGVhcENlbGwqPihwKSk7CisgICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgaXNNYXJr
aW5nLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKworaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uICE9IHNwYWNlKCktPmFsbG9jYXRlZFZlcnNpb24o
KTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxv
Y2F0ZWRXaXRoU3dlZXAoKQoreworICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChpc05ld2x5QWxsb2NhdGVkU3RhbGUoKSkgeworICAgICAg
ICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hbGxvY2F0ZWRWZXJzaW9u
ID0gc3BhY2UoKS0+YWxsb2NhdGVkVmVyc2lvbigpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCgpCit7CisgICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0
ZWQgJiYgIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KQEAgLTg3LDkgKzExOSwxOSBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtl
ZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAK
LWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKCkKK2lubGluZSBI
ZWFwKiBNYXJrZWRCbG9jazo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFw
OworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtlZEJsb2NrOjpzcGFjZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNwYWNlKCk7Cit9CisKK2lubGluZSBNYXJrZWRT
cGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UoKSBjb25zdAogewotICAgIG1fbWFya2lu
Z1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgcmV0dXJuICZoZWFwKCkt
Pm9iamVjdFNwYWNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMjA2NzExKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTEsMjkgKzQ1MSw2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAg
ICBmb3JFYWNoQWxsb2NhdG9yKAotICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gYWxsb2NhdG9yLnRha2VMYXN0QWN0aXZlQmxvY2soKSkKLSAgICAgICAg
ICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgICAgIH0pOwotICAgIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBp
IDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBtX2xhcmdlQWxsb2Nh
dGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLQotICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgICAgIFsmXSAoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2Nr
LCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgCi0gICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFs
bG9jYXRpb25zKQotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2Nh
dGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKLSAgICB9Ci19Ci0KIHZvaWQgTWFya2VkU3BhY2U6
OmJlZ2luTWFya2luZygpCiB7CiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygp
ID09IEZ1bGxDb2xsZWN0aW9uKSB7CkBAIC00ODMsMTYgKzQ2MCwxNSBAQCB2b2lkIE1hcmtlZFNw
YWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgbV9tYXJraW5nVmVyc2lv
biA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOwotICAgICAgICAKLSAgICAgICAgaWYg
KFVOTElLRUxZKG1fbWFya2luZ1ZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAg
ICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0
dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KKyAgICAgICAgaWYgKFVOTElLRUxZKG5l
eHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgewogICAgICAg
ICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6Okhh
bmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNl
dE1hcmtpbmdWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5y
ZXNldE1hcmtzKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9uKTsK
KyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9s
YXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0K
QEAgLTUxMSw2ICs0ODcsMjMgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIAog
dm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCiB7CisgICAgaWYgKFVOTElLRUxZKG5leHRW
ZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAg
IGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFu
ZGxlKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlLT5yZXNldEFsbG9jYXRlZCgpOworICAgICAg
ICAgICAgfSk7CisgICAgfQorICAgICAgICAKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBuZXh0
VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24pOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFs
bG9jYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25z
KQorICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNO
ZXdseUFsbG9jYXRlZCgpKTsKKyAgICB9CisKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewog
ICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1hcmtpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTMg
KzY1LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2Vz
ID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKICAgICBzdGF0aWMgY29uc3QgSGVhcFZl
cnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRl
ZCBibG9ja3MuCi0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0g
MTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAgc3Rh
dGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMjsgLy8gVGhlIHZlcnNpb24g
dGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguIFNldCB0byBtYWtlIHN1cmUgdGhhdCBuZXh0
VmVyc2lvbihudWxsVmVyc2lvbikgIT0gaW5pdGlhbFZlcnNpb24uCiAgICAgCi0gICAgSGVhcFZl
cnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICBzdGF0aWMgSGVhcFZl
cnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKICAgICB7CiAgICAgICAgIHZl
cnNpb24rKzsKICAgICAgICAgaWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24pCi0gICAgICAgICAg
ICB2ZXJzaW9uKys7CisgICAgICAgICAgICB2ZXJzaW9uID0gaW5pdGlhbFZlcnNpb247CiAgICAg
ICAgIHJldHVybiB2ZXJzaW9uOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9u
OyB9CisgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb2NhdGVkVmVyc2lvbjsgfQogCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+
JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9
CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CkBAIC0yMTcsNiArMjE4LDcg
QEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1faGVhcDsKICAgICBIZWFwVmVyc2lvbiBtX21hcmtp
bmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKKyAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRl
ZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwogICAg
IGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCShyZXZpc2lvbiAyMDY3MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhl
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9CaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAu
aAkocmV2aXNpb24gMjA2NzExKQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDE2ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIEJpdG1h
cEF0b21pY01vZGUgewotICAgIC8vIFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgYmVo
YXZlIGp1c3QgbGlrZSB0ZXN0QW5kU2V0LgotICAgIEJpdG1hcE5vdEF0b21pYywKLQotICAgIC8v
IFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgdXNlIGNvbXBhcmVBbmRTd2FwLCBzbyB0
aGF0IGl0J3MKLSAgICAvLyBhdG9taWMgZXZlbiB3aGVuIHVzZWQgY29uY3VycmVudGx5LgotICAg
IEJpdG1hcEF0b21pYwotfTsKLQotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0
b21pY01vZGUgYXRvbWljTW9kZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5cGUg
PSB1aW50MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZSA9IHVpbnQzMl90PgogY2xhc3MgQml0bWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAKQEAgLTU5LDggKzUwLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuZXh0UG9zc2li
bHlVbnNldChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2b2lk
IGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QpIGNvbnN0Owot
ICAgIHNpemVfdCBjb3VudChzaXplX3QgPSAwKSBjb25zdDsKKyAgICBpbnQ2NF90IGZpbmRSdW5P
Zlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0OworICAgIHNpemVfdCBjb3VudChzaXplX3Qg
c3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgIHNpemVf
dCBpc0Z1bGwoKSBjb25zdDsKICAgICAKQEAgLTcxLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5j
JikgY29uc3Q7CiAgICAgCisgICAgc2l6ZV90IG1lcmdlQ291bnRBbmRDbGVhcihCaXRtYXAmKTsK
KyAgICBzaXplX3Qgc2V0Q291bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICB2b2lkIHNldEFuZENs
ZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCkBA
IC05MCwyNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jk
cz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgpOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBl
bmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4gISEoYml0c1tuIC8gd29yZFNpemVd
ICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikK
IHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3LDggKzExMiw4IEBAIGlubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICAgICAgY2xlYXIobik7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFz
ayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNp
emU7CkBAIC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTM3LDE0ICsxMzIs
OSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXpl
X3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5k
U2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykK
LSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9
PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3
b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBl
KiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE1NywxNCArMTQ3LDkgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWlj
TW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihz
aXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAg
ICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBC
aXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3
b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3NywyOCArMTYyLDI4IEBAIGlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAm
PSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJB
bGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewogICAg
IG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3Jk
VHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBj
b25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVy
biAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6ZTsKICAgICByZXR1cm4gc3RhcnQg
KyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVu
T2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVuZ3RoKSAK
ICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCArMjAyLDggQEAgaW5saW5lIGludDY0
X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJldHVybiAtMTsKIH0KIAotdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5h
bWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVf
dCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7
CkBAIC0yMzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5
KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNv
bnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBp
ZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1
bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAg
ICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzMsMzAgQEAgaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRz
W2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBi
aXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShj
b25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhj
bHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBm
dW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9y
RWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsK
QEAgLTI4Niw4ICsyNzEsMzkgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
Q291bnRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICByZXN1bHQg
Kz0gV1RGOjpiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSB8PSBvdGhlci5i
aXRzW2ldKSk7CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldENvdW50
QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdU
Rjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gPSBvdGhlci5iaXRzW2ld
KSk7CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citp
bmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRt
YXAmIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewor
ICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9
IDA7CisgICAgfQorfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRv
cj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0p
CkBAIC0yOTYsMTQgKzMxMiwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5z
aWduZWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNv
bnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290538</attachid>
            <date>2016-10-03 17:09:58 -0700</date>
            <delta_ts>2016-10-03 18:31:33 -0700</delta_ts>
            <desc>passes tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>49657</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBACiAJCTBGNjRCMjc5MUE3OTU3
QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3NzFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3Bw
ICovOyB9OwogCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjc4MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovOyB9OworCQkwRjY2NENFODFE
QTMwNEVGMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjRDRTcxREEzMDRFRDAwQjAwQTExIC8q
IENvZGVCbG9ja1NldElubGluZXMuaCAqLzsgfTsKIAkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0Yx
IC8qIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1
bGxCeXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY2NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUMyMTgzNTY3MkIwMEQw
MTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9OwpAQCAtMjY5Nyw2ICsyNjk4LDcgQEAK
IAkJMEY2NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckFyZ0lubGluZXMuaDsgcGF0aCA9
IGIzL2Fpci9BaXJBcmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja1NldElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzIxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdBdmFpbGFiaWxpdHkuY3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzAzLDYgKzUzMDUsNyBAQAogCQkJ
CTBGMUMzREQ5MUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCAqLywKIAkJCQkwRkQ4QTMx
MTE3RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4QTMxMjE3
RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCisJCQkJMEY2NjRDRTcxREEzMDRF
RDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKIAkJCQkxNDZCMTREQjEyRUI1
QjEyMDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYyMTJF
QjU1OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCTJBN0E1OEVFMTgw
OEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLywKQEAgLTc5MTcsNiArNzkyMCw3IEBACiAJ
CQkJQkMxOEM0MUMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxl
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY2NENFODFEQTMwNEVGMDBCMDBBMTEgLyog
Q29kZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY3REEwRTE5QkND
OTAwODA2NkREIC8qIEpTQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURF
NDAwQTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUREODRB
MThBOTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdD
YXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgog
I2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUg
IkNvbXBhY3RKSVRDb2RlTWFwLmgiCkBAIC03Niw2ICs3NSw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOworY2xhc3MgQ29kZUJsb2NrU2V0Owog
Y2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTEzMTEsMzggKzEzMTEsNiBAQCBpbmxpbmUgdm9pZCBDb2Rl
QmxvY2s6OmNsZWFyVmlzaXRXZWFrbHlICiAgICAgbV92aXNpdFdlYWtseUhhc0JlZW5DYWxsZWQu
c3RvcmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQogCi1pbmxpbmUgdm9p
ZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5k
aWRhdGVDb2RlQmxvY2spCi17Ci0gICAgQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKLSAgICAv
LyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFuZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5
IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCi0gICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0ZUNvZGVCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhp
cyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2UgbmFzdHkgY2FzZXMgaW4gb25lIGdvLgotICAgIC8v
IDAgKyAxID0gMQotICAgIC8vIC0xICsgMSA9IDAKLSAgICBpZiAodmFsdWUgKyAxIDw9IDEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8
Q29kZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJsb2NrKTsgCi0gICAgaWYgKCFtX29sZENvZGVCbG9j
a3MuY29udGFpbnMoY29kZUJsb2NrKSAmJiAhbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVC
bG9jaykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOwot
fQotCi1pbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENv
ZGVCbG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBUcnkgdG8gcmVjb3ZlciBncmFjZWZ1bGx5IGlmIHdlIGZvcmdldCB0byBl
eGVjdXRlIGEgYmFycmllciBmb3IgYQotICAgIC8vIENvZGVCbG9jayB0aGF0IGRvZXMgdmFsdWUg
cHJvZmlsaW5nLiBUaGlzIGlzIHByb2JhYmx5IG92ZXJraWxsLCBidXQgd2UKLSAgICAvLyBoYXZl
IGFsd2F5cyBkb25lIGl0LgotICAgIEhlYXA6OmhlYXAoY29kZUJsb2NrKS0+d3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7Ci0KLSAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5hZGQoY29kZUJsb2NrKTsK
LX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1
dGFibGU6OmZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYmIGZ1bmN0b3IpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1Nl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0LmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDE2ICsxMDcsMTcgQEAgYm9v
bCBDb2RlQmxvY2tTZXQ6OmNvbnRhaW5zKGNvbnN0IExvY2tIbwogICAgIHJldHVybiBtX29sZENv
ZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSB8fCBtX25ld0NvZGVCbG9ja3MuY29udGFpbnMo
Y29kZUJsb2NrKSB8fCBtX2N1cnJlbnRseUV4ZWN1dGluZy5jb250YWlucyhjb2RlQmxvY2spOwog
fQogCi12b2lkIENvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2NrcyhIZWFwKiBoZWFwKQordm9pZCBDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJl
bnRseUV4ZWN1dGluZyhIZWFwKiBoZWFwKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xv
Y2spOwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZW1lbWJlcmluZyAiLCBt
X2N1cnJlbnRseUV4ZWN1dGluZy5zaXplKCksICIgY29kZSBibG9ja3MuXG4iKTsKICAgICBmb3Ig
KENvZGVCbG9jayogY29kZUJsb2NrIDogbV9jdXJyZW50bHlFeGVjdXRpbmcpCiAgICAgICAgIGhl
YXAtPndyaXRlQmFycmllcihjb2RlQmxvY2spOworfQogCi0gICAgLy8gSXQncyBzYWZlIHRvIGNs
ZWFyIHRoaXMgc2V0IGJlY2F1c2Ugd2Ugd29uJ3QgZGVsZXRlIHRoZSBDb2RlQmxvY2tzCi0gICAg
Ly8gaW4gaXQgdW50aWwgdGhlIG5leHQgR0MsIGFuZCB3ZSdsbCByZWNvbXB1dGUgaXQgYXQgdGhh
dCB0aW1lLgordm9pZCBDb2RlQmxvY2tTZXQ6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCkKK3sK
ICAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDcgKzcxLDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIEFkZCBhbGwgY3VycmVudGx5IGV4
ZWN1dGluZyBDb2RlQmxvY2tzIHRvIHRoZSByZW1lbWJlcmVkIHNldCB0byBiZSAKICAgICAvLyBy
ZS1zY2FubmVkIGR1cmluZyB0aGUgbmV4dCBjb2xsZWN0aW9uLgotICAgIHZvaWQgd3JpdGVCYXJy
aWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcyhIZWFwKik7CisgICAgdm9pZCB3cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCopOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRs
eUV4ZWN1dGluZygpOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBMb2NrSG9sZGVyJiwgdm9p
ZCogY2FuZGlkYXRlQ29kZUJsb2NrKTsKICAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9s
b2NrOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2Nr
U2V0SW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3Qg
TG9ja0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCit7CisgICAgQVNT
RVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFu
ZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCisg
ICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0
ZUNvZGVCbG9jayk7CisgICAgCisgICAgLy8gVGhpcyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2Ug
bmFzdHkgY2FzZXMgaW4gb25lIGdvLgorICAgIC8vIDAgKyAxID0gMQorICAgIC8vIC0xICsgMSA9
IDAKKyAgICBpZiAodmFsdWUgKyAxIDw9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJs
b2NrKTsgCisgICAgaWYgKCFtX29sZENvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSAmJiAh
bV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOworfQorCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tT
ZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAg
IGlmICghY29kZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2N1cnJlbnRseUV4ZWN1
dGluZy5hZGQoY29kZUJsb2NrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHJl
dmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2
ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNv
bnNlcnZhdGl2ZVJvb3RzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJD
b2RlQmxvY2tTZXQuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwVXRpbC5oIgogI2luY2x1ZGUgIkpJVFN0
dWJSb3V0aW5lU2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJD
b25zZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAi
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzg4LDE4ICszODksOCBAQCB2b2lkIEhlYXA6
Om1hcmtSb290cyhkb3VibGUgZ2NTdGFydFRpbWUsCiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVh
cFJvb3RWaXNpdG9yKG1fc2xvdFZpc2l0b3IpOwogICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3Rz
IGNvbnNlcnZhdGl2ZVJvb3RzKCp0aGlzKTsKICAgICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHBy
ZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNv
bnZlcmdlbmNlIik7Ci0gICAgICAgIC8vIFdlIGdhdGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVm
b3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNlIGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBn
YXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJl
bmNlIGlzIHZhbGlkLgotICAgICAgICB7Ci0gICAgICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252
ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBz
Y2FuIik7Ci0gICAgICAgICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBz
dGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKLSAgICAgICAgICAg
IGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cyk7Ci0gICAgICAgICAgICBnYXRo
ZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICB9CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZHOjpyZW1lbWJlckNvZGVCbG9ja3MoKm1fdm0p
OwpAQCAtNDYzLDkgKzQ1NCwyNCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhkb3VibGUgZ2NTdGFy
dFRpbWUsCiAgICAgICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5hYmxlcihtX3Nsb3RWaXNpdG9y
KTsKICAgICAgICAgCiAgICAgICAgIG1fc2xvdFZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKKwor
ICAgICAgICB7CisgICAgICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Nj
b3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7CisgICAgICAg
ICAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygqdGhpcyk7CisgICAgICAg
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgICAg
ICAgICBnYXRoZXJTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3Rh
Y2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKKyAgICAgICAgICAgIGdhdGhlckpTU3RhY2tS
b290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVy
Um9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVS
b290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdl
IHdhbnQgdG8gZG8gdGhpcyB0byBjb25zZXJ2YXRpdmVseSBlbnN1cmUgdGhhdCB3ZSByZXNjYW4g
YW55IGNvZGUgYmxvY2tzIHRoYXQgYXJlCisgICAgICAgICAgICAvLyBydW5uaW5nIHJpZ2h0IG5v
dy4gSG93ZXZlciwgd2UgbmVlZCB0byBiZSBzdXJlIHRvIGRvIGl0ICphZnRlciogd2UgbWFyayB0
aGUgY29kZSBibG9jaworICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBrbm93IGZvciBzdXJlIGlm
IGl0IHJlYWxseSBuZWVkcyBhIGJhcnJpZXIuCisgICAgICAgICAgICB3cml0ZUJhcnJpZXJDdXJy
ZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgICAgIH0KKwogICAgICAgICB2aXNpdEV4
dGVybmFsUmVtZW1iZXJlZFNldCgpOwogICAgICAgICB2aXNpdFNtYWxsU3RyaW5ncygpOwotICAg
ICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKICAgICAgICAg
dmlzaXRQcm90ZWN0ZWRPYmplY3RzKGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0QXJn
dW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0RXhjZXB0aW9uKGhl
YXBSb290VmlzaXRvcik7CkBAIC01MjQsMTEgKzUzMCw2IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJr
aW5nKCkKICAgICAgICAgbV9jb2RlQmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENvbGxlY3Rpb24o
KTsKICAgICAKICAgICB7Ci0gICAgICAgIFRpbWluZ1Njb3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRU
aW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuY2xlYXJOZXdseUFsbG9jYXRlZCIpOwot
ICAgICAgICBtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAg
Ci0gICAgewogICAgICAgICBUaW1pbmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMs
ICJtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZyIpOwogICAgICAgICBtX29iamVjdFNwYWNlLmJl
Z2luTWFya2luZygpOwogICAgIH0KQEAgLTEwNjAsNiArMTA2MSw3IEBAIE5FVkVSX0lOTElORSB2
b2lkIEhlYXA6OmNvbGxlY3RJbXBsKEhlYXAKIAogICAgIG5vdGlmeUluY3JlbWVudGFsU3dlZXBl
cigpOwogICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKKyAg
ICBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKIAogICAgIHByZXBhcmVGb3JB
bGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpOwpAQCAtMTIwMyw3ICsx
MjA1LDEyIEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCkKIAogdm9pZCBI
ZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCkKIHsKLSAgICBt
X2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhp
cyk7CisgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcodGhp
cyk7Cit9CisKK3ZvaWQgSGVhcDo6Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCkK
K3sKKyAgICBtX2NvZGVCbG9ja3MtPmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7CiB9CiAKIHZv
aWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAsNiArMzUwLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVzKCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKKyAgICB2b2lkIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcygp
OwogICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB2b2lkIGhhcnZlc3RXZWFr
UmVmZXJlbmNlcygpOwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDY3
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNvbnN0IEhhc2hT
ZXQ8TWFya2VkQmxvY2sqPiYgc2V0ID0gaGVhcC5vYmplY3RTcGFjZSgpLmJsb2NrcygpLnNldCgp
OwogICAgICAgICAKKyAgICAgICAgQVNTRVJUKGhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmco
KSk7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzTWFya2luZyA9IHRydWU7CisgICAgICAg
IAogICAgICAgICBjaGFyKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3NlZFBvaW50
ZXIpOwogICAgICAgICAKICAgICAgICAgLy8gSXQgY291bGQgcG9pbnQgdG8gYSBsYXJnZSBhbGxv
Y2F0aW9uLgpAQCAtODUsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgJiYgc2V0
LmNvbnRhaW5zKHByZXZpb3VzQ2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICYmIHByZXZpb3Vz
Q2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsS2luZCgpID09IEhlYXBDZWxsOjpBdXhpbGlhcnkpIHsK
ICAgICAgICAgICAgICAgICBwcmV2aW91c1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4ocHJl
dmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxBbGlnbihwcmV2aW91c1BvaW50ZXIpKTsKLSAg
ICAgICAgICAgICAgICBpZiAocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwo
bWFya2luZ1ZlcnNpb24sIHByZXZpb3VzUG9pbnRlcikpCisgICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01h
cmtpbmcsIHByZXZpb3VzUG9pbnRlcikpCiAgICAgICAgICAgICAgICAgICAgIGZ1bmMocHJldmlv
dXNQb2ludGVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTksNyArMTAyLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgYXV0byB0cnlQ
b2ludGVyID0gWyZdICh2b2lkKiBwb2ludGVyKSB7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwb2ludGVyKSkKKyAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwobWFya2luZ1ZlcnNpb24sIGlz
TWFya2luZywgcG9pbnRlcikpCiAgICAgICAgICAgICAgICAgZnVuYyhwb2ludGVyKTsKICAgICAg
ICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTEgKzUzLDgg
QEAgYm9vbCBNYXJrZWRBbGxvY2F0b3I6OmlzUGFnZWRPdXQoZG91YmxlIAogICAgIHVuc2lnbmVk
IGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID0gMDsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9ibG9ja3Muc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOwotICAgICAgICBpZiAoYmxvY2spIHsK
LSAgICAgICAgICAgIC8vIEZvcmNlcyB1cyB0byB0b3VjaCB0aGUgbWVtb3J5IG9mIHRoZSBibG9j
aywgYnV0IGhhcyBubyBzZW1hbnRpYyBlZmZlY3QuCi0gICAgICAgICAgICBpZiAoYmxvY2stPmFy
ZU1hcmtzU3RhbGUoKSkKLSAgICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldE1hcmtp
bmdWZXJzaW9uKCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGJsb2NrKQorICAgICAgICAgICAg
YmxvY2stPmJsb2NrKCkuc2V0TmVlZHNEZXN0cnVjdGlvbigpOwogICAgICAgICArK2l0ZXJzU2lu
Y2VMYXN0VGltZUNoZWNrOwogICAgICAgICBpZiAoaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPj0g
SGVhcDo6c190aW1lQ2hlY2tSZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICBkb3VibGUgY3VycmVu
dFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw2ICs1NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0
cnlDcmUKIAogTWFya2VkQmxvY2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJs
b2NrU3BhY2UpCiAgICAgOiBtX3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisg
ICAgLCBtX2FsbG9jYXRlZFZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAg
IG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZt
KCksICp0aGlzKTsKICAgICAKQEAgLTIwNyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0
eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1v
ZGUgc3dlZXBNb2RlKQogewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNB
bnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJT
ZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
SGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2Vs
ZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERv
ZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcg
QEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIAogICAgIEFT
U0VSVCghbV9uZXdseUFsbG9jYXRlZCk7CiAgICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgbV9hbGxvY2F0ZWRW
ZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAg
IFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciBmdW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxs
KGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsyOTcsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9G
aW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNl
KTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtzKCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVh
ckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFySGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+
bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigp
OwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXds
eUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxs
b2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7
CiAgICAgc3dlZXAoKTsKIH0KIApAQCAtMzA3LDcgKzMxMSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8KICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9j
YXRlZCh0aGlzKSk7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1f
bmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBpZiAoIWhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVw
KCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhl
IGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxp
c3QoKTsKICAgICB9CkBAIC0zNDYsMjQgKzM1MCw4MSBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91
dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2Uo
KS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAo
YXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpIHsKLSAgICAgICAgY2xlYXJNYXJrcyhtYXJr
aW5nVmVyc2lvbik7Ci0gICAgICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMg
dG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCi0gICAgICAgIGhhbmRsZSgpLmFsbG9j
YXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1
ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQoJmhh
bmRsZSgpKQorICAgICAgICB8fCAobWFya2luZ1ZlcnNpb24gIT0gTWFya2VkU3BhY2U6Om51bGxW
ZXJzaW9uCisgICAgICAgICAgICAmJiBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5n
VmVyc2lvbikgIT0gbWFya2luZ1ZlcnNpb24pKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkga25v
dyB0aGF0IHRoZSBibG9jayBpcyBmdWxsIGFuZCBpcyBhbHJlYWR5IHJlY29nbml6ZWQgYXMgc3Vj
aCwgb3IgdGhhdCB0aGUKKyAgICAgICAgLy8gYmxvY2sgZGlkIG5vdCBzdXJ2aXZlIHRoZSBwcmV2
aW91cyBHQy4gU28sIHdlIGNhbiBjbGVhciBtYXJrIGJpdHMgdGhlIG9sZCBmYXNoaW9uZWQKKyAg
ICAgICAgLy8gd2F5LiBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3Igc3VjaCBhIGJsb2NrIHRv
IGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0aCBhbiB1cC10by0KKyAgICAgICAgLy8gZGF0ZSB2ZXJz
aW9uISBJZiBpdCBkb2VzLCB0aGVuIHdlIHdhbnQgdG8gbGVhdmUgdGhlIG5ld2x5QWxsb2NhdGVk
IGFsb25lLCBzaW5jZSB0aGF0CisgICAgICAgIC8vIG1lYW5zIHRoYXQgd2UgaGFkIGFsbG9jYXRl
ZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1wdHkgYmxvY2sgYnV0IGRpZCBub3QgZmlsbCBpdCB1cCwg
c28KKyAgICAgICAgLy8gd2UgY3JlYXRlZCBhIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBtX21h
cmtzLmNsZWFyQWxsKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT25lIHdheSBvciBhbm90
aGVyLCB3ZSdsbCB1cGRhdGUgbmV3bHlBbGxvY2F0ZWQuCisgICAgICAgIEhlYXBWZXJzaW9uIGFs
bG9jYXRlZFZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lv
bigpOworICAgICAgICBpZiAoV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4qIG5ld2x5QWxsb2Nh
dGVkID0gaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZC5nZXQoKSkgeworICAgICAgICAgICAgc2l6
ZV90IGNvdW50OworICAgICAgICAgICAgaWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9
PSBhbGxvY2F0ZWRWZXJzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNvbnRl
bnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0
IG9mIGJpdHMKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBh
bmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVk
LT5tZXJnZUNvdW50QW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIG5ld2x5QWxsb2NhdGVkIHdp
dGggbWFya2VkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mCisgICAgICAgICAgICAgICAgLy8g
Yml0cyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAg
ICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5zZXRDb3VudEFuZENsZWFyKG1fbWFy
a3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb3VudCkKKyAgICAgICAgICAg
ICAgICBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGNvdW50ID09IGhhbmRsZSgpLmNlbGxzUGVyQmxvY2soKSkgeworICAgICAgICAgICAg
ICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCgmaGFuZGxlKCksIHRydWUp
OworICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ291bnQgdGhl
IG51bWJlciBvZiBzZXQgYml0cy4gSWYgaXQncyB0aGUgZnVsbCBzZXQsIHRoZW4gc2V0IGFsbG9j
YXRlZCBhbmQgY2xlYXIgdGhlCisgICAgICAgICAgICAvLyBiaXRzLiBJZiBub3QsIHRoZW4gYWxs
b2NhdGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNwbGF0IG1hcmtlZCBpbnRvIGl0IHdoaWxlIGNsZWFy
aW5nCisgICAgICAgICAgICAvLyBtYXJrZWQuCisgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IG1fbWFya3MuY291bnQoKTsKKyAgICAgICAgICAgIGlmIChjb3VudCkgeworICAgICAgICAgICAg
ICAgIGlmIChjb3VudCA9PSBoYW5kbGUoKS5jZWxsc1BlckJsb2NrKCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGUo
KS5hbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGUoKS5tX25ld2x5QWxs
b2NhdGVkID0gc3RkOjptYWtlX3VuaXF1ZTxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4oKTsK
KyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZC0+c2V0QW5kQ2xl
YXIobV9tYXJrcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9IGFsbG9jYXRlZFZlcnNpb247
CiAgICAgfQorICAgIGNsZWFySGFzQW55TWFya2VkKCk7CisgICAgV1RGOjpzdG9yZVN0b3JlRmVu
Y2UoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAgCisgICAg
Ly8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4g
dGhpcyBibG9jay4KKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hlY2tJ
c01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOwogfQogCi12b2lkIE1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKCkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzZXRBbGxvY2F0ZWQo
KQogewotICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJz
aW9uKCkpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVk
VmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAotdm9pZCBNYXJrZWRCbG9j
azo6Y2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKK3ZvaWQgTWFya2VkQmxv
Y2s6OnJlc2V0TWFya3MoKQogewotICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKLSAgICBjbGVhckhh
c0FueU1hcmtlZCgpOwotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9tYXJraW5n
VmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIC8vIFdlIHdhbnQgYWJvdXRUb01hcmtTbG93
KCkgdG8gc2VlIHdoYXQgdGhlIG1hcmsgYml0cyB3ZXJlIGFmdGVyIHRoZSBsYXN0IGNvbGxlY3Rp
b24uIEl0IHVzZXMKKyAgICAvLyB0aGUgdmVyc2lvbiBudW1iZXIgdG8gZGlzdGluZ3Vpc2ggYmV0
d2VlbiB0aGUgbWFya3MgaGF2aW5nIGFscmVhZHkgYmVlbiBzdGFsZSBiZWZvcmUKKyAgICAvLyBi
ZWdpbk1hcmtpbmcoKSwgb3IganVzdCBzdGFsZSBub3cgdGhhdCBiZWdpbk1hcmtpbmcoKSBidW1w
ZWQgdGhlIHZlcnNpb24uIElmIHdlIGhhdmUgYSB2ZXJzaW9uCisgICAgLy8gd3JhcGFyb3VuZCwg
dGhlbiB3ZSB3aWxsIGNhbGwgdGhpcyBtZXRob2QgYmVmb3JlIHJlc2V0dGluZyB0aGUgdmVyc2lv
biB0byBudWxsLiBXaGVuIHRoZQorICAgIC8vIHZlcnNpb24gaXMgbnVsbCwgYWJvdXRUb01hcmtT
bG93KCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgbWFya3Mgd2VyZSBub3Qgc3RhbGUgYXMgb2YgYmVm
b3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCkuIEhlbmNlIHRoZSBuZWVkIHRvIHdoaXAgdGhlIG1h
cmtzIGludG8gc2hhcGUuCisgICAgaWYgKGFyZU1hcmtzU3RhbGUoKSkKKyAgICAgICAgbV9tYXJr
cy5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZl
cnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00MjUsNiArNDg2LDExIEBAIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG8KICAgICBtX2FsbG9jYXRvci0+
cmVtb3ZlQmxvY2sodGhpcyk7CiB9CiAKK3ZvaWQgTWFya2VkQmxvY2s6OnNldE5lZWRzRGVzdHJ1
Y3Rpb24oKQoreworICAgIG1fbmVlZHNEZXN0cnVjdGlvbiA9IGhhbmRsZSgpLm5lZWRzRGVzdHJ1
Y3Rpb24oKTsKK30KKwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRv
cihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VS
VChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwpAQCAtNDQy
LDEwICs1MDgsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhCiAg
ICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWRE
ZXN0cnVjdGlvbik7CiAgICAgCi0gICAgYmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24gPSBuZWVk
c0Rlc3RydWN0aW9uKCk7CisgICAgYmxvY2soKS5zZXROZWVkc0Rlc3RydWN0aW9uKCk7CiAgICAg
Ci0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQg
LyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFy
a2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgZG91YmxlIG1hcmtD
b3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxz
UGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUg
Y29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCiAgICAgUkVMRUFTRV9BU1NFUlQobWFya0Nv
dW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWluKCkpKTsKQEAgLTQ2NiwxMiArNTMxLDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkUmVtb3ZlRnJvbUEKIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29u
c3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVj
dFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgY2VsbCk7CisgICAgcmV0dXJuIGlzTGl2ZShzcGFj
ZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgY2VsbCk7CiB9CiAK
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQogewot
ICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVy
c2lvbigpLCBwKTsKKyAgICByZXR1cm4gaXNMaXZlQ2VsbChzcGFjZSgpLT5tYXJraW5nVmVyc2lv
bigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAy
MDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsK
IGNsYXNzIEpTQ2VsbDsKIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKK2NsYXNzIE1hcmtlZFNwYWNl
OwogCiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lv
bjsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgICAg
ICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFZNKiB2bSgpIGNv
bnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAKQEAgLTE0MSwx
MSArMTQzLDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IEZy
ZWVMaXN0Jik7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VtZUFsbG9jYXRpbmcoKTsgLy8gQ2FsbCB0
aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9yIHNvbWUgbm9uLWNvbGxlY3Rpb24g
cmVsYXRlZCBwdXJwb3NlLgogICAgICAgICAgICAgCi0gICAgICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGUgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwIHdhcyBub24tbnVsbCAKLSAgICAgICAgLy8g
YW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAg
ICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIAogICAgICAgICBzaXpl
X3QgY2VsbFNpemUoKTsKKyAgICAgICAgaW5saW5lIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2soKTsK
KyAgICAgICAgCiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMo
KSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTU0LDggKzE1NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6
ZSgpOwogICAgICAgICAgICAgCi0gICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKLSAgICAgICAgaW5saW5lIGJvb2wg
aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCopOworICAg
ICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wg
aXNNYXJraW5nLCBjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVD
ZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9p
ZCopOwogCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJv
b2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CkBAIC0xNjQsOCArMTY0LDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZv
aWQgY2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBi
b29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2Nh
dGVkOyB9CisgICAgICAgIEhlYXBWZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FsbG9jYXRlZFZlcnNpb247IH0KKyAgICAgICAgCisgICAgICAgIGlubGluZSBib29s
IGlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0OwogICAgICAgICAgICAgCisgICAgICAgIGlu
bGluZSBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCk7CisgICAgICAgIGlubGlu
ZSBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVkKCk7CisgICAgICAgIAorICAgICAgICB2b2lkIHJl
c2V0QWxsb2NhdGVkKCk7CisgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKQEAgLTE4NSw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEhhbmRsZShIZWFwJiwgdm9pZCopOwotICAgICAgICAgICAgCisgICAgICAg
IAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAg
ICAgICAgICAKQEAgLTIzMSw2ICsyMzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogbV9hbGxvY2F0b3IgeyBudWxscHRyIH07CiAgICAgICAgIHNpemVfdCBtX2luZGV4IHsg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OwogICAgICAgICBXZWFrU2V0IG1f
d2Vha1NldDsKKyAgICAgICAgCisgICAgICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lv
bjsKICAgICAgICAgICAgIAogICAgICAgICBNYXJrZWRCbG9jayogbV9ibG9jayB7IG51bGxwdHIg
fTsKICAgICB9OwpAQCAtMjQwLDYgKzI0OSw4IEBAIHB1YmxpYzoKICAgICBIYW5kbGUmIGhhbmRs
ZSgpOwogICAgICAgICAKICAgICBWTSogdm0oKSBjb25zdDsKKyAgICBpbmxpbmUgSGVhcCogaGVh
cCgpIGNvbnN0OworICAgIGlubGluZSBNYXJrZWRTcGFjZSogc3BhY2UoKSBjb25zdDsKIAogICAg
IHN0YXRpYyBib29sIGlzQXRvbUFsaWduZWQoY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBNYXJr
ZWRCbG9jayogYmxvY2tGb3IoY29uc3Qgdm9pZCopOwpAQCAtMjc4LDcgKzI4OSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIAotICAgIGlubGluZSB2b2lkIHJlc2V0TWFya2lu
Z1ZlcnNpb24oKTsKKyAgICAvLyBUaGlzIGlzIHVzdWFsbHkgYSBuby1vcCwgYW5kIHdlIHVzZSBp
dCBhcyBhIG5vLW9wIHRoYXQgdG91Y2hlcyB0aGUgcGFnZSBpbiBpc1BhZ2VkT3V0KCkuCisgICAg
dm9pZCBzZXROZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgCisgICAgdm9pZCByZXNldE1hcmtzKCk7
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFsaWdubWVudE1h
c2sgPSBhdG9tU2l6ZSAtIDE7CkBAIC0yODksMTMgKzMwMywxMSBAQCBwcml2YXRlOgogICAgIEF0
b20qIGF0b21zKCk7CiAgICAgICAgIAogICAgIHZvaWQgYWJvdXRUb01hcmtTbG93KEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKLSAgICB2b2lkIGNsZWFyTWFya3MoKTsKLSAgICB2b2lkIGNs
ZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwogICAgIHZvaWQgY2xlYXJIYXNB
bnlNYXJrZWQoKTsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWRTbG93KCk7CiAgICAgICAgIAot
ICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90
PiBtX21hcmtzOworICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbWFya3M7CiAKICAg
ICBib29sIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICBMb2NrIG1fbG9jazsKQEAgLTUzNCwxNSAr
NTQ2LDYgQEAgaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIG1f
bmV3bHlBbGxvY2F0ZWQtPmNsZWFyKG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAg
ICBpZiAobV9uZXdseUFsbG9jYXRlZCkgewotICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzQXRvbShjb25zdCB2b2lkKiBwKQogewogICAg
IEFTU0VSVChNYXJrZWRCbG9jazo6aXNBdG9tQWxpZ25lZChwKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2
NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxNiBAQAogCiAjaW5jbHVkZSAiTWFya2VkQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFj
ZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2Vs
bCkKK2lubGluZSB1bnNpZ25lZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKCkK
K3sKKyAgICByZXR1cm4gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7Cit9
CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewog
ICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogICAgIApAQCAtMzksMjIgKzQ1LDQ4IEBAIGlu
bGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9j
aygpOwotICAgIAogICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGlmIChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtp
bmdWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE1hcmtlZEJsb2NrJiBibG9j
ayA9IHRoaXMtPmJsb2NrKCk7CisgICAgCisgICAgaWYgKGJsb2NrLm1fbWFya2luZ1ZlcnNpb24g
IT0gbWFya2luZ1ZlcnNpb24pIHsKKyAgICAgICAgYm9vbCBzdGFsZU1hcmtzQ29udmV5TGl2ZW5l
c3MgPQorICAgICAgICAgICAgaXNNYXJraW5nICYmIE1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbihi
bG9jay5tX21hcmtpbmdWZXJzaW9uKSA9PSBtYXJraW5nVmVyc2lvbjsKKyAgICAgICAgaWYgKCFz
dGFsZU1hcmtzQ29udmV5TGl2ZW5lc3MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogCi0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5t
X21hcmtzLmdldChibG9jay5hdG9tTnVtYmVyKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwg
Y29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNl
bGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCB2b2lk
KiBwKQogewogICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3Qg
SGVhcENlbGwqPihwKSk7CisgICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgaXNNYXJr
aW5nLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKworaW5saW5lIGJvb2wg
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uICE9IHNwYWNlKCktPmFsbG9jYXRlZFZlcnNpb24o
KTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxv
Y2F0ZWRXaXRoU3dlZXAoKQoreworICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChpc05ld2x5QWxsb2NhdGVkU3RhbGUoKSkgeworICAgICAg
ICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hbGxvY2F0ZWRWZXJzaW9u
ID0gc3BhY2UoKS0+YWxsb2NhdGVkVmVyc2lvbigpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCgpCit7CisgICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0
ZWQgJiYgIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4KQEAgLTg3LDkgKzExOSwxOSBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtl
ZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAK
LWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKCkKK2lubGluZSBI
ZWFwKiBNYXJrZWRCbG9jazo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFw
OworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtlZEJsb2NrOjpzcGFjZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNwYWNlKCk7Cit9CisKK2lubGluZSBNYXJrZWRT
cGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UoKSBjb25zdAogewotICAgIG1fbWFya2lu
Z1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgcmV0dXJuICZoZWFwKCkt
Pm9iamVjdFNwYWNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTEsMjkgKzQ1MSw2IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAg
ICBmb3JFYWNoQWxsb2NhdG9yKAotICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gYWxsb2NhdG9yLnRha2VMYXN0QWN0aXZlQmxvY2soKSkKLSAgICAgICAg
ICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwotICAgICAgICAgICAgcmV0dXJu
IEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAgICAgIH0pOwotICAgIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBp
IDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBtX2xhcmdlQWxsb2Nh
dGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLQotICAgIGlmICghQVNTRVJUX0RJU0FC
TEVEKSB7Ci0gICAgICAgIGZvckVhY2hCbG9jaygKLSAgICAgICAgICAgIFsmXSAoTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2Nr
LCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgCi0gICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFs
bG9jYXRpb25zKQotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2Nh
dGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKLSAgICB9Ci19Ci0KIHZvaWQgTWFya2VkU3BhY2U6
OmJlZ2luTWFya2luZygpCiB7CiAgICAgaWYgKG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygp
ID09IEZ1bGxDb2xsZWN0aW9uKSB7CkBAIC00ODMsMTYgKzQ2MCwxNSBAQCB2b2lkIE1hcmtlZFNw
YWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0
dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgbV9tYXJraW5nVmVyc2lv
biA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOwotICAgICAgICAKLSAgICAgICAgaWYg
KFVOTElLRUxZKG1fbWFya2luZ1ZlcnNpb24gPT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAg
ICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0
dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4KKyAgICAgICAgaWYgKFVOTElLRUxZKG5l
eHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgewogICAgICAg
ICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6Okhh
bmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNl
dE1hcmtpbmdWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5y
ZXNldE1hcmtzKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9uKTsK
KyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9s
YXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0K
QEAgLTUxMSw2ICs0ODcsMjMgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIAog
dm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCiB7CisgICAgaWYgKFVOTElLRUxZKG5leHRW
ZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAg
IGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFu
ZGxlKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlLT5yZXNldEFsbG9jYXRlZCgpOworICAgICAg
ICAgICAgfSk7CisgICAgfQorICAgICAgICAKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBuZXh0
VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24pOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9
IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFs
bG9jYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25z
KQorICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNO
ZXdseUFsbG9jYXRlZCgpKTsKKyAgICB9CisKICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewog
ICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1hcmtpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTMg
KzY1LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2Vz
ID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAKICAgICBzdGF0aWMgY29uc3QgSGVhcFZl
cnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRl
ZCBibG9ja3MuCi0gICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0g
MTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAgc3Rh
dGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMjsgLy8gVGhlIHZlcnNpb24g
dGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguIFNldCB0byBtYWtlIHN1cmUgdGhhdCBuZXh0
VmVyc2lvbihudWxsVmVyc2lvbikgIT0gaW5pdGlhbFZlcnNpb24uCiAgICAgCi0gICAgSGVhcFZl
cnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKKyAgICBzdGF0aWMgSGVhcFZl
cnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVyc2lvbikKICAgICB7CiAgICAgICAgIHZl
cnNpb24rKzsKICAgICAgICAgaWYgKHZlcnNpb24gPT0gbnVsbFZlcnNpb24pCi0gICAgICAgICAg
ICB2ZXJzaW9uKys7CisgICAgICAgICAgICB2ZXJzaW9uID0gaW5pdGlhbFZlcnNpb247CiAgICAg
ICAgIHJldHVybiB2ZXJzaW9uOwogICAgIH0KICAgICAKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9u
OyB9CisgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb2NhdGVkVmVyc2lvbjsgfQogCiAgICAgY29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+
JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9
CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CkBAIC0yMTcsNiArMjE4LDcg
QEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1faGVhcDsKICAgICBIZWFwVmVyc2lvbiBtX21hcmtp
bmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKKyAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRl
ZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwogICAg
IGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhl
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9CaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAu
aAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDE2ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIEJpdG1h
cEF0b21pY01vZGUgewotICAgIC8vIFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgYmVo
YXZlIGp1c3QgbGlrZSB0ZXN0QW5kU2V0LgotICAgIEJpdG1hcE5vdEF0b21pYywKLQotICAgIC8v
IFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgdXNlIGNvbXBhcmVBbmRTd2FwLCBzbyB0
aGF0IGl0J3MKLSAgICAvLyBhdG9taWMgZXZlbiB3aGVuIHVzZWQgY29uY3VycmVudGx5LgotICAg
IEJpdG1hcEF0b21pYwotfTsKLQotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0
b21pY01vZGUgYXRvbWljTW9kZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5cGUg
PSB1aW50MzJfdD4KK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZSA9IHVpbnQzMl90PgogY2xhc3MgQml0bWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAKQEAgLTU5LDggKzUwLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuZXh0UG9zc2li
bHlVbnNldChzaXplX3QpIGNvbnN0OwogICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2b2lk
IGNsZWFyQWxsKCk7Ci0gICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QpIGNvbnN0Owot
ICAgIHNpemVfdCBjb3VudChzaXplX3QgPSAwKSBjb25zdDsKKyAgICBpbnQ2NF90IGZpbmRSdW5P
Zlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0OworICAgIHNpemVfdCBjb3VudChzaXplX3Qg
c3RhcnQgPSAwKSBjb25zdDsKICAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgIHNpemVf
dCBpc0Z1bGwoKSBjb25zdDsKICAgICAKQEAgLTcxLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5j
JikgY29uc3Q7CiAgICAgCisgICAgc2l6ZV90IG1lcmdlQ291bnRBbmRDbGVhcihCaXRtYXAmKTsK
KyAgICBzaXplX3Qgc2V0Q291bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICB2b2lkIHNldEFuZENs
ZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCkBA
IC05MCwyNiArODUsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jk
cz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgpOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBl
bmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4gISEoYml0c1tuIC8gd29yZFNpemVd
ICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikK
IHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3LDggKzExMiw4IEBAIGlubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICAgICAgY2xlYXIobik7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFz
ayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNp
emU7CkBAIC0xMjcsOCArMTIyLDggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFu
ZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTM3LDE0ICsxMzIs
OSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXpl
X3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5k
U2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykK
LSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9
PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3
b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBl
KiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE1NywxNCArMTQ3LDkgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWlj
TW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihz
aXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAg
ICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBC
aXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3
b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3NywyOCArMTYyLDI4IEBAIGlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAm
PSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJB
bGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewogICAg
IG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3Jk
VHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBj
b25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVy
biAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6ZTsKICAgICByZXR1cm4gc3RhcnQg
KyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVu
T2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVuZ3RoKSAK
ICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCArMjAyLDggQEAgaW5saW5lIGludDY0
X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJldHVybiAtMTsKIH0KIAotdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5h
bWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVf
dCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7
CkBAIC0yMzAsOCArMjE1LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5
KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNv
bnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBp
ZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjQsOCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1
bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAg
ICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzMsMzAgQEAgaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRz
W2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZv
aWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBi
aXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShj
b25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhj
bHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
d29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBm
dW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9y
RWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsK
QEAgLTI4Niw4ICsyNzEsMzkgQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21p
Y01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
Q291bnRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICByZXN1bHQg
Kz0gV1RGOjpiaXRDb3VudChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSB8PSBvdGhlci5i
aXRzW2ldKSk7CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldENvdW50
QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdU
Rjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gPSBvdGhlci5iaXRzW2ld
KSk7CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citp
bmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRt
YXAmIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewor
ICAgICAgICBiaXRzW2ldID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9
IDA7CisgICAgfQorfQorCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRv
cj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3b3JkczsgKytpKSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0p
CkBAIC0yOTYsMTQgKzMxMiwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5z
aWduZWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNv
bnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgdW5zaWduZWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290545</attachid>
            <date>2016-10-03 18:31:33 -0700</date>
            <delta_ts>2016-10-03 19:45:24 -0700</delta_ts>
            <desc>the ptach</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>57561</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBA
QAorMjAxNi0xMC0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFy
a2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgd2Ugd291bGQgZm9yZ2V0IHdoaWNoIG9iamVjdHMgYXJl
IGxpdmUgdGhlIG1vbWVudCB3ZSBzdGFydGVkIGNvbGxlY3Rpb24uCisgICAgICAgIFRoYXQncyBi
ZWNhdXNlIHRoZSBmbGlwIGF0IHRoZSBiZWdpbm5pbmcgY2xlYXJzIGFsbCBtYXJrIGJpdHMuCisg
ICAgICAgIAorICAgICAgICBCdXQgd2UgYWxyZWFkeSBoYXZlIGEgZmFjaWxpdHkgZm9yIHRyYWNr
aW5nIG9iamVjdHMgdGhhdCBhcmUgbGl2ZS1idXQtbm90LW1hcmtlZC4gSXQncyBjYWxsZWQKKyAg
ICAgICAgbmV3bHlBbGxvY2F0ZWQuIFNvLCBpbnN0ZWFkIG9mIGNsZWFyaW5nIG1hcmsgYml0cywg
d2Ugd2FudCB0byBqdXN0IHRyYW5zZmVyIHRoZW0gdG8KKyAgICAgICAgbmV3bHlBbGxvY2F0ZWQu
IFRoZW4gd2Ugd2FudCB0byBjbGVhciBhbGwgbmV3bHlBbGxvY2F0ZWQgYWZ0ZXIgR0MuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGltcGxlbWVudHMgc3VjaCBhbiBhcHByb2FjaCwgYWxvbmcgd2l0
aCBzb21lIG9idmlvdXMgb3B0aW1pemF0aW9uczoKKyAgICAgICAgCisgICAgICAgIC0gV2UgZG9u
J3QgcmVhbGx5IGNsZWFyIGFsbCBuZXdseUFsbG9jdGVkIGFmdGVyIEdDLiBXZSBqdXN0IHZlcnNp
b24gdGhlbSwgbGlrZSB3ZSB2ZXJzaW9uCisgICAgICAgICAgbWFyayBiaXRzLgorICAgICAgICAK
KyAgICAgICAgLSBJZiBhbGwgY2VsbHMgaW4gYSBibG9jayBhcmUgbGl2ZSwgd2Ugc2V0IHRoZSBh
bGxvY2F0ZWQgYml0IGZvciB0aGF0IGJsb2NrIGluc3RlYWQgb2YKKyAgICAgICAgICBjcmVhdGlu
ZyBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgbGVhZHMgdG8gc29tZSBp
bnRlcmVzdGluZyBhbGdvcml0aG1zLiBBbnkgYWxnb3JpdGhtIHRoYXQgcmVhc29ucyBhYm91dCBs
aXZlbmVzcyBuZWVkcyB0bworICAgICAgICBjb25zaWRlciBzb21lIHdpbGQgYXJyYW5nZW1lbnRz
IG9mIHZlcnNpb25zOgorICAgICAgICAKKyAgICAgICAgLSBJZiBtYXJrcyBhcmUgY3VycmVudCwg
eW91IGNhbiBqdXN0IHVzZSB0aGUgbWFya3MgZGlyZWN0bHkuCisgICAgICAgIAorICAgICAgICAt
IElmIHRoZSBtYXJrcyBhcmUgZXhhY3RseSBvbmUgdmVyc2lvbiBvbGQgYW5kIHdlJ3JlIG1hcmtp
bmcsIHRoZW4gaXQgbWVhbnMgdGhhdCB3ZSBsb2dpY2FsbHkKKyAgICAgICAgICBzaG91bGQgaGF2
ZSBtZXJnZWQgbWFya3MgaW50byBuZXdseUFsbG9jYXRlZCwgc28gbWFya3MgaXMgb3VyIGN1cnJl
bnQgdmlldyBvZgorICAgICAgICAgIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICAKKyAgICAgICAg
LSBJZiBuZXdseUFsbG9jYXRlZCBhcmUgY3VycmVudCwgd2UgY2FuIHVzZSB0aGVtLCBidXQgaWYg
dGhleSBhcmUgbm90LCB0aGVuIHdlIHNob3VsZCBpZ25vcmUKKyAgICAgICAgICB0aGVtLgorICAg
ICAgICAKKyAgICAgICAgU2VlIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coKSBmb3IgdGhl
IGZ1bGwgYXJyYW5nZW1lbnQgb2YgY2FzZXMgd2UgaGF2ZSB0byBoYW5kbGUuCisgICAgICAgIAor
ICAgICAgICBUbyB2YWxpZGF0ZSB0aGlzIGNoYW5nZSwgd2Ugbm93IHJ1biB0aGUgY29uc2VydmF0
aXZlIHNjYW4gYWZ0ZXIgdGhlIGJlZ2luTWFya2luZyBmbGlwLiBBbmQgaXQKKyAgICAgICAgdG90
YWxseSB3b3JrcyEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBodWdlIHN0ZXAgdG93YXJk
cyBjb25jdXJyZW50IEdDLiBJdCBtZWFucyB0aGF0IHdlIG91Z2h0IHRvIGJlIGFibGUgdG8gcnVu
IHRoZQorICAgICAgICBhbGxvY2F0b3Igd2hpbGUgbWFya2luZy4gU2luY2Ugd2UgYWxyZWFkeSBz
ZXBhcmF0ZWx5IG1hZGUgaXQgcG9zc2libGUgdG8gcnVuIHRoZSBiYXJyaWVyCisgICAgICAgIHdo
aWxlIG1hcmtpbmcsIHRoaXMgbWVhbnMgdGhhdCB3ZSdyZSBwcmV0dHkgbXVjaCByZWFkeSBmb3Ig
c29tZSBzZXJpb3VzIGNvbmN1cnJlbmN5IGFjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
aXMgc2hvd2luZyBhIDAuOCUgTG9uZ1NwaWRlciByZWdyZXNzaW9uIGJ1dCBuZXV0cmFsIG9uIGV2
ZXJ5dGhpbmcgZWxzZSAoYWN0dWFsbHksIEkgc2VlCisgICAgICAgIG1heWJlLWZhc3RlciByZXN1
bHRzIG9uIFN1blNwaWRlci9PY3RhbmUvS3Jha2VuKS4gIEknbSBzdGlsbCBydW5uaW5nIGJyb3dz
ZXIgYmVuY2htYXJrcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAg
KiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNvZGVC
bG9ja1NldDo6bWFyayk6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6Cisg
ICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2xlYXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2lu
dGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFu
ZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxl
Y3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFz
dENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJr
U2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya3MpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmFsbG9jYXRlZFZlcnNpb24pOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXds
eUFsbG9jYXRlZFN0YWxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aGFz
QW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpoZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6cmVzZXRNYXJraW5nVmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6Om1hcmtpbmdWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorCiAyMDE2LTEwLTAzICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEdldE1hcEJ1Y2tldCBub2RlIHNob3VsZCBzcGVj
dWxhdGUgb24gdGhlIHR5cGUgb2YgaXRzICdrZXknIGNoaWxkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ0NSw2ICs0NDUsNyBAQAogCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVk
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEY2NEIyN0Ex
QTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY0
RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8q
IEFpckFyZ0lubGluZXMuaCAqLzsgfTsKKwkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENv
ZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVz
LmggKi87IH07CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmNwcCAqLzsgfTsKQEAgLTI2OTcsNiArMjY5OCw3IEBACiAJCTBGNjRCMjc3MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRCMjc4
MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJBcmdJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyQXJnSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBB
MTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlQmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxp
dHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxhYmls
aXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTMwMyw2ICs1MzA1LDcgQEAKIAkJCQkwRjFDM0REOTFCQkNFMDlFMDBF
NTIzRTQgLyogQ2VsbFN0YXRlLmggKi8sCiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8q
IENvZGVCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENv
ZGVCbG9ja1NldC5oICovLAorCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxv
Y2tTZXRJbmxpbmVzLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNl
cnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29u
c2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgKi8sCkBAIC03OTE3LDYgKzc5MjAsNyBAQAogCQkJCUJDMThDNDFDMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEgLyog
SlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDY3NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
a0hhc2guaCIKLSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5o
IgpAQCAtNzYsNiArNzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczsKK2NsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBA
IC0xMzExLDM4ICsxMzExLDYgQEAgaW5saW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0V2Vh
a2x5SAogICAgIG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJr
KGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQotewot
ICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7Ci0gICAgLy8gV2UgaGF2ZSB0byBjaGVjayBm
b3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJr
ZXJzLgotICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
YW5kaWRhdGVDb2RlQmxvY2spOwotICAgIAotICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9m
IHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBnby4KLSAgICAvLyAwICsgMSA9IDEKLSAgICAvLyAt
MSArIDEgPSAwCi0gICAgaWYgKHZhbHVlICsgMSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0
ZUNvZGVCbG9jayk7IAotICAgIGlmICghbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9j
aykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQgQ29k
ZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRv
IHJlY292ZXIgZ3JhY2VmdWxseSBpZiB3ZSBmb3JnZXQgdG8gZXhlY3V0ZSBhIGJhcnJpZXIgZm9y
IGEKLSAgICAvLyBDb2RlQmxvY2sgdGhhdCBkb2VzIHZhbHVlIHByb2ZpbGluZy4gVGhpcyBpcyBw
cm9iYWJseSBvdmVya2lsbCwgYnV0IHdlCi0gICAgLy8gaGF2ZSBhbHdheXMgZG9uZSBpdC4KLSAg
ICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOwotCi0gICAg
bV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmb3JFYWNoQ29kZUJs
b2NrKEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNywxNiArMTA3LDE3IEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpjb250
YWlucyhjb25zdCBMb2NrSG8KICAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNv
ZGVCbG9jaykgfHwgbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9jdXJy
ZW50bHlFeGVjdXRpbmcuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tT
ZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoSGVhcCogaGVhcCkK
K3ZvaWQgQ29kZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCog
aGVhcCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmVtZW1iZXJpbmcgIiwgbV9jdXJyZW50bHlFeGVjdXRpbmcu
c2l6ZSgpLCAiIGNvZGUgYmxvY2tzLlxuIik7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9j
ayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQogICAgICAgICBoZWFwLT53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrKTsKK30KIAotICAgIC8vIEl0J3Mgc2FmZSB0byBjbGVhciB0aGlzIHNldCBiZWNhdXNl
IHdlIHdvbid0IGRlbGV0ZSB0aGUgQ29kZUJsb2NrcwotICAgIC8vIGluIGl0IHVudGlsIHRoZSBu
ZXh0IEdDLCBhbmQgd2UnbGwgcmVjb21wdXRlIGl0IGF0IHRoYXQgdGltZS4KK3ZvaWQgQ29kZUJs
b2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpCit7CiAgICAgbV9jdXJyZW50bHlFeGVj
dXRpbmcuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAKICAgICAvLyBBZGQgYWxsIGN1cnJlbnRseSBleGVjdXRpbmcgQ29kZUJsb2NrcyB0
byB0aGUgcmVtZW1iZXJlZCBzZXQgdG8gYmUgCiAgICAgLy8gcmUtc2Nhbm5lZCBkdXJpbmcgdGhl
IG5leHQgY29sbGVjdGlvbi4KLSAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGlu
Z0NvZGVCbG9ja3MoSGVhcCopOworICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0
aW5nKEhlYXAqKTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsKIAogICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9j
ayk7CiAgICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwg
dm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQoreworICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQo
KSk7CisgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBh
cmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgorICAgIHVpbnRwdHJfdCB2YWx1ZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOworICAgIAor
ICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBn
by4KKyAgICAvLyAwICsgMSA9IDEKKyAgICAvLyAtMSArIDEgPSAwCisgICAgaWYgKHZhbHVlICsg
MSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAgIGlmICghbV9v
bGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250
YWlucyhjb2RlQmxvY2spKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrKGxvY2tlciwgY29k
ZUJsb2NrKTsKK30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tI
b2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSGVhcFV0aWwuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIK
ICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKQEAgLTM4OCwxOCArMzg5LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdj
U3RhcnRUaW1lLAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcihtX3Nsb3RW
aXNpdG9yKTsKICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygq
dGhpcyk7CiAgICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Nj
b3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252ZXJnZW5jZSIpOwotICAgICAg
ICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJrIGJp
dHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1h
cmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICAg
ICAgewotICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgq
dGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwotICAgICAgICAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgICAgICAgICAg
Z2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9w
LCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMo
Y29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3Rz
KGNvbnNlcnZhdGl2ZVJvb3RzKTsKLSAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIERGRzo6cmVtZW1iZXJDb2RlQmxvY2tzKCptX3ZtKTsKQEAgLTQ2Myw5ICs0NTQsMjQg
QEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQYXJh
bGxlbE1vZGVFbmFibGVyIGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAg
ICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgeworICAgICAgICAg
ICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1h
cmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOworICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9v
dHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMpOworICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290
cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJl
Z2lzdGVycyk7CisgICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJv
b3RzKTsKKyAgICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8g
Y29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0
IGFyZQorICAgICAgICAgICAgLy8gcnVubmluZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5lZWQg
dG8gYmUgc3VyZSB0byBkbyBpdCAqYWZ0ZXIqIHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAgICAg
ICAgICAgIC8vIHNvIHRoYXQgd2Uga25vdyBmb3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMgYSBi
YXJyaWVyLgorICAgICAgICAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2NrcygpOworICAgICAgICB9CisKICAgICAgICAgdmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQo
KTsKICAgICAgICAgdmlzaXRTbWFsbFN0cmluZ3MoKTsKLSAgICAgICAgdmlzaXRDb25zZXJ2YXRp
dmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CiAgICAgICAgIHZpc2l0UHJvdGVjdGVkT2JqZWN0
cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEFyZ3VtZW50QnVmZmVycyhoZWFwUm9v
dFZpc2l0b3IpOwogICAgICAgICB2aXNpdEV4Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3IpOwpAQCAt
NTI0LDExICs1MzAsNiBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgICAgIG1fY29k
ZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewotICAg
ICAgICBUaW1pbmdTY29wZSBjbGVhck5ld2x5QWxsb2NhdGVkVGltaW5nU2NvcGUoKnRoaXMsICJt
X29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQiKTsKLSAgICAgICAgbV9vYmplY3RTcGFj
ZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgfQotICAgIAotICAgIHsKICAgICAgICAgVGlt
aW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5iZWdp
bk1hcmtpbmciKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAgICB9
CkBAIC0xMDYwLDYgKzEwNjEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1w
bChIZWFwCiAKICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgY2xlYXJDdXJyZW50bHlFeGVj
dXRpbmdDb2RlQmxvY2tzKCk7CiAKICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKQEAgLTEyMDMsNyArMTIwNSwxMiBAQCB2b2lkIEhlYXA6
Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3Vy
cmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCiB7Ci0gICAgbV9jb2RlQmxvY2tzLT53cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOworICAgIG1fY29kZUJsb2Nr
cy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOworfQorCit2b2lkIEhlYXA6
OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCit7CisgICAgbV9jb2RlQmxvY2tz
LT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogfQogCiB2b2lkIEhlYXA6OnByZXBhcmVGb3JB
bGxvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgdm9p
ZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNl
dCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisgICAgICAg
IEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hhciogcG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcgKzg4
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0Nh
bmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
Y2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJl
dmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1BvaW50
ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCog
cG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIpKQog
ICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlz
aW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1Myw4IEBAIGJvb2wgTWFya2VkQWxsb2Nh
dG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVD
aGVjayA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNp
emUoKTsgKytpbmRleCkgewogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1f
YmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGb3Jj
ZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50
aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkpCi0gICAg
ICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnNldE5l
ZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAg
ICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVz
b2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93
ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRWZXJz
aW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3RO
dWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBA
IC0yMDcsNyArMjA4LDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZQogdGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAg
ICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICBpZiAoaGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRo
U3dlZXAoKSkKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5
TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihz
d2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1v
ZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkPihzd2VlcE1vZGUpOwogfQpAQCAtMjc3LDYgKzI3OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAKICAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0
ZWQpOwogICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6Qml0bWFw
PGF0b21zUGVyQmxvY2s+PigpOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2Jq
ZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAKICAgICBTZXROZXdseUFsbG9jYXRlZEZ1
bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKQEAgLTI5NSwx
MCArMjk3LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIGFs
bG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7Ci0gICAgbV9ibG9jay0+Y2xl
YXJNYXJrcygpOworICAgIG1fYmxvY2stPm1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX2Jsb2Nr
LT5jbGVhckhhc0FueU1hcmtlZCgpOworICAgIG1fYmxvY2stPm1fbWFya2luZ1ZlcnNpb24gPSBo
ZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKTsKICAgICBtX3dlYWtTZXQubGFz
dENoYW5jZVRvRmluYWxpemUoKTsKLQotICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBt
X25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBoZWFw
KCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOwogICAgIHN3ZWVwKCk7CiB9CiAK
QEAgLTMwNyw3ICszMTEsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVB
bGxvCiAgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogICAgIEFT
U0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCi0gICAgaWYgKCFtX25ld2x5QWxsb2NhdGVkKSB7Cisg
ICAgaWYgKCFoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKSB7CiAgICAgICAgIC8vIFRo
aXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0b3Bw
ZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQpAQCAtMzQ2
LDI0ICszNTAsODEgQEAgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBWZQog
ewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKGFyZU1hcmtzU3RhbGUobWFya2lu
Z1ZlcnNpb24pKSB7Ci0gICAgICAgIGNsZWFyTWFya3MobWFya2luZ1ZlcnNpb24pOwotICAgICAg
ICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBp
biB0aGlzIGJsb2NrLgotICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5k
Q2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIGlmICghYXJlTWFy
a3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAo
aGFuZGxlKCkuYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKCZoYW5kbGUoKSkKKyAgICAgICAgfHwg
KG1hcmtpbmdWZXJzaW9uICE9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgorICAgICAgICAgICAg
JiYgTWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pICE9IG1hcmtpbmdW
ZXJzaW9uKSkgeworICAgICAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYmxvY2sgaXMg
ZnVsbCBhbmQgaXMgYWxyZWFkeSByZWNvZ25pemVkIGFzIHN1Y2gsIG9yIHRoYXQgdGhlCisgICAg
ICAgIC8vIGJsb2NrIGRpZCBub3Qgc3Vydml2ZSB0aGUgcHJldmlvdXMgR0MuIFNvLCB3ZSBjYW4g
Y2xlYXIgbWFyayBiaXRzIHRoZSBvbGQgZmFzaGlvbmVkCisgICAgICAgIC8vIHdheS4gTm90ZSB0
aGF0IGl0J3MgcG9zc2libGUgZm9yIHN1Y2ggYSBibG9jayB0byBoYXZlIG5ld2x5QWxsb2NhdGVk
IHdpdGggYW4gdXAtdG8tCisgICAgICAgIC8vIGRhdGUgdmVyc2lvbiEgSWYgaXQgZG9lcywgdGhl
biB3ZSB3YW50IHRvIGxlYXZlIHRoZSBuZXdseUFsbG9jYXRlZCBhbG9uZSwgc2luY2UgdGhhdAor
ICAgICAgICAvLyBtZWFucyB0aGF0IHdlIGhhZCBhbGxvY2F0ZWQgaW4gdGhpcyBwcmV2aW91c2x5
IGVtcHR5IGJsb2NrIGJ1dCBkaWQgbm90IGZpbGwgaXQgdXAsIHNvCisgICAgICAgIC8vIHdlIGNy
ZWF0ZWQgYSBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIE9uZSB3YXkgb3IgYW5vdGhlciwgd2UnbGwgdXBkYXRlIG5l
d2x5QWxsb2NhdGVkLgorICAgICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0gdm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgaWYgKFdU
Rjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+KiBuZXdseUFsbG9jYXRlZCA9IGhhbmRsZSgpLm1fbmV3
bHlBbGxvY2F0ZWQuZ2V0KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAg
ICAgIGlmIChoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPT0gYWxsb2NhdGVkVmVyc2lvbikg
eworICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBu
ZXdseUFsbG9jYXRlZC4gSWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAg
ICAgICAgLy8gdGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisg
ICAgICAgICAgICAgICAgY291bnQgPSBuZXdseUFsbG9jYXRlZC0+bWVyZ2VDb3VudEFuZENsZWFy
KG1fbWFya3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBSZXBs
YWNlIHRoZSBjb250ZW50cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1hcmtlZC4gSWYgd2UgZ2V0
IHRoZSBmdWxsIHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGJpdHMgdGhlbiBkZWxldGUgbmV3
bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291bnQgPSBu
ZXdseUFsbG9jYXRlZC0+c2V0Q291bnRBbmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghY291bnQpCisgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXds
eUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgICAgICAgICBlbHNlIGlmIChjb3VudCA9PSBoYW5k
bGUoKS5jZWxsc1BlckJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0
b3IoKS0+c2V0SXNBbGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBo
YW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMu
IElmIGl0J3MgdGhlIGZ1bGwgc2V0LCB0aGVuIHNldCBhbGxvY2F0ZWQgYW5kIGNsZWFyIHRoZQor
ICAgICAgICAgICAgLy8gYml0cy4gSWYgbm90LCB0aGVuIGFsbG9jYXRlIG5ld2x5QWxsb2NhdGVk
IGFuZCBzcGxhdCBtYXJrZWQgaW50byBpdCB3aGlsZSBjbGVhcmluZworICAgICAgICAgICAgLy8g
bWFya2VkLgorICAgICAgICAgICAgdW5zaWduZWQgY291bnQgPSBtX21hcmtzLmNvdW50KCk7Cisg
ICAgICAgICAgICBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gaGFu
ZGxlKCkuY2VsbHNQZXJCbG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fbWFya3MuY2xl
YXJBbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPnNldElz
QWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91
bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgICAgICAgICAgICAgICAg
IGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQtPnNldEFuZENsZWFyKG1fbWFya3MpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoYW5kbGUoKS5t
X2FsbG9jYXRlZFZlcnNpb24gPSBhbGxvY2F0ZWRWZXJzaW9uOwogICAgIH0KKyAgICBjbGVhckhh
c0FueU1hcmtlZCgpOworICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgbV9tYXJraW5n
VmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2UncmUg
dGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgaGFu
ZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhh
bmRsZSgpLCB0cnVlKTsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCit2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVkKCkKIHsKLSAgICBjbGVhck1hcmtz
KHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKKyAgICBtX25ld2x5
QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFj
ZTo6bnVsbFZlcnNpb247CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoSGVhcFZl
cnNpb24gbWFya2luZ1ZlcnNpb24pCit2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtzKCkKIHsK
LSAgICBtX21hcmtzLmNsZWFyQWxsKCk7Ci0gICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJraW5nVmVy
c2lvbjsKKyAgICAvLyBXZSB3YW50IGFib3V0VG9NYXJrU2xvdygpIHRvIHNlZSB3aGF0IHRoZSBt
YXJrIGJpdHMgd2VyZSBhZnRlciB0aGUgbGFzdCBjb2xsZWN0aW9uLiBJdCB1c2VzCisgICAgLy8g
dGhlIHZlcnNpb24gbnVtYmVyIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIG1hcmtzIGhhdmlu
ZyBhbHJlYWR5IGJlZW4gc3RhbGUgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCksIG9yIGp1
c3Qgc3RhbGUgbm93IHRoYXQgYmVnaW5NYXJraW5nKCkgYnVtcGVkIHRoZSB2ZXJzaW9uLiBJZiB3
ZSBoYXZlIGEgdmVyc2lvbgorICAgIC8vIHdyYXBhcm91bmQsIHRoZW4gd2Ugd2lsbCBjYWxsIHRo
aXMgbWV0aG9kIGJlZm9yZSByZXNldHRpbmcgdGhlIHZlcnNpb24gdG8gbnVsbC4gV2hlbiB0aGUK
KyAgICAvLyB2ZXJzaW9uIGlzIG51bGwsIGFib3V0VG9NYXJrU2xvdygpIHdpbGwgYXNzdW1lIHRo
YXQgdGhlIG1hcmtzIHdlcmUgbm90IHN0YWxlIGFzIG9mIGJlZm9yZQorICAgIC8vIGJlZ2luTWFy
a2luZygpLiBIZW5jZSB0aGUgbmVlZCB0byB3aGlwIHRoZSBtYXJrcyBpbnRvIHNoYXBlLgorICAg
IGlmIChhcmVNYXJrc1N0YWxlKCkpCisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBt
X21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwogfQogCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRApAQCAtNDI1LDYgKzQ4NiwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnJlbW92ZUZyb21BbGxvCiAgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOwog
fQogCit2b2lkIE1hcmtlZEJsb2NrOjpzZXROZWVkc0Rlc3RydWN0aW9uKCkKK3sKKyAgICBtX25l
ZWRzRGVzdHJ1Y3Rpb24gPSBoYW5kbGUoKS5uZWVkc0Rlc3RydWN0aW9uKCk7Cit9CisKIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBh
bGxvY2F0b3IsIHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKQEAgLTQ0MiwxMCArNTA4LDkgQEAgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYQogICAgIGlmIChtX2F0dHJpYnV0ZXMu
Y2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9h
dHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwogICAgIAot
ICAgIGJsb2NrKCkubV9uZWVkc0Rlc3RydWN0aW9uID0gbmVlZHNEZXN0cnVjdGlvbigpOworICAg
IGJsb2NrKCkuc2V0TmVlZHNEZXN0cnVjdGlvbigpOwogICAgIAotICAgIHVuc2lnbmVkIGNlbGxz
UGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemU7Ci0gICAgZG91
YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24o
KSAqIGNlbGxzUGVyQmxvY2spOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25z
OjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKCkpOwogICAgIAog
ICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0
aGlzIHJhbmdlLgogICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7CkBAIC00NjYs
MTIgKzUzMSwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BCiAK
IGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQog
ewotICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJz
aW9uKCksIGNlbGwpOworICAgIHJldHVybiBpc0xpdmUoc3BhY2UoKS0+bWFya2luZ1ZlcnNpb24o
KSwgc3BhY2UoKS0+aXNNYXJraW5nKCksIGNlbGwpOwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKIHsKLSAgICByZXR1cm4gaXNMaXZlQ2Vs
bCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgcCk7CisgICAgcmV0
dXJuIGlzTGl2ZUNlbGwoc3BhY2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgc3BhY2UoKS0+aXNNYXJr
aW5nKCksIHApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFz
cyBNYXJrZWRBbGxvY2F0b3I7CitjbGFzcyBNYXJrZWRTcGFjZTsKIAogdHlwZWRlZiB1aW50cHRy
X3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZlcnNpb247CkBAIC0xMTAsNiArMTExLDcg
QEAgcHVibGljOgogCiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7
CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIE1hcmtlZFNwYWNl
KiBzcGFjZSgpIGNvbnN0OwogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1Nl
dCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCkBAIC0xNDEsMTEgKzE0Myw5IEBAIHB1YmxpYzoK
ICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYpOwogICAgICAgICBG
cmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2Fs
aXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAg
ICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlICJuZXdseSBhbGxvY2F0
ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5
IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxs
b2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CisgICAg
ICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2NrKCk7CisgICAgICAgIAogICAgICAgICBj
b25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERl
c3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHNp
emVfdCBtYXJrQ291bnQoKTsKICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgICAgIAot
ICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKik7Ci0gICAgICAgIGlubGluZSBib29sIGlzTGl2ZUNlbGwoSGVhcFZlcnNp
b24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNM
aXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3QgSGVh
cENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJr
aW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IHZvaWQqKTsKIAogICAgICAgICBib29s
IGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qg
dm9pZCopOwpAQCAtMTY0LDggKzE2NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgc2V0TmV3
bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0
ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9j
YXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQorICAgICAgICBIZWFw
VmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRWZXJz
aW9uOyB9CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc05ld2x5QWxsb2NhdGVkU3Rh
bGUoKSBjb25zdDsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBoYXNBbnlOZXds
eUFsbG9jYXRlZFdpdGhTd2VlcCgpOworICAgICAgICBpbmxpbmUgYm9vbCBoYXNBbnlOZXdseUFs
bG9jYXRlZCgpOworICAgICAgICAKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOworICAg
ICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1
cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBG
dW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRl
cmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CkBAIC0xODUsNyAr
MTkyLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUo
SGVhcCYsIHZvaWQqKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8
RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFNjcmli
YmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCkBAIC0yMzEsNiAr
MjM4LDggQEAgcHVibGljOgogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsg
bnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CisgICAgICAgIAor
ICAgICAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb247CiAgICAgICAgICAgICAKICAg
ICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKQEAgLTI0MCw2
ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCiAgICAg
Vk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICBpbmxp
bmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc0F0b21B
bGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGJsb2NrRm9yKGNv
bnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODksMTAgQEAgcHVibGljOgogICAgICAgICAKICAgICBi
b29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247
IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgLy8g
VGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2UgaXQgYXMgYSBuby1vcCB0aGF0IHRv
dWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAgIHZvaWQgc2V0TmVlZHNEZXN0cnVj
dGlvbigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJrcygpOwogICAgIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpA
QCAtMjg5LDEzICszMDMsMTEgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAg
ICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7
Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAg
ICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwogICAgICAgICAKLSAgICBXVEY6OkJpdG1hcDxhdG9t
c1BlckJsb2NrLCBXVEY6OkJpdG1hcEF0b21pYywgdWludDhfdD4gbV9tYXJrczsKKyAgICBXVEY6
OkJpdG1hcDxhdG9tc1BlckJsb2NrPiBtX21hcmtzOwogCiAgICAgYm9vbCBtX25lZWRzRGVzdHJ1
Y3Rpb247CiAgICAgTG9jayBtX2xvY2s7CkBAIC01MzQsMTUgKzU0Niw2IEBAIGlubGluZSB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmUKICAgICBtX25ld2x5QWxsb2NhdGVkLT5jbGVh
cihtX2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OkhhbmRsZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgaWYgKG1fbmV3bHlBbGxvY2F0
ZWQpIHsKLSAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKIHsKICAgICBBU1NFUlQoTWFya2VkQmxvY2s6
OmlzQXRvbUFsaWduZWQocCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxMCArMjcsMTYgQEAKIAogI2luY2x1ZGUgIk1hcmtlZEFsbG9jYXRvci5oIgogI2luY2x1ZGUg
Ik1hcmtlZEJsb2NrLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCitpbmxpbmUgdW5zaWduZWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6Y2VsbHNQZXJCbG9jaygpCit7CisgICAgcmV0dXJuIE1hcmtl
ZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZSgpOworfQorCitpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wg
aXNNYXJraW5nLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQoIWlzRnJlZUxp
c3RlZCgpKTsKICAgICAKQEAgLTM5LDIyICs0NSw0OCBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9j
azo6SGFuZGxlOjppc0xpdmUoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
Ci0gICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKLSAgICAKICAgICBpZiAo
YWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKLSAgICBpZiAoYmxvY2suYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwor
ICAgIAorICAgIGlmIChibG9jay5tX21hcmtpbmdWZXJzaW9uICE9IG1hcmtpbmdWZXJzaW9uKSB7
CisgICAgICAgIGJvb2wgc3RhbGVNYXJrc0NvbnZleUxpdmVuZXNzID0KKyAgICAgICAgICAgIGlz
TWFya2luZyAmJiBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24oYmxvY2subV9tYXJraW5nVmVyc2lv
bikgPT0gbWFya2luZ1ZlcnNpb247CisgICAgICAgIGlmICghc3RhbGVNYXJrc0NvbnZleUxpdmVu
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHJldHVybiBibG9j
ay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4gYmxvY2subV9tYXJrcy5nZXQoYmxvY2suYXRv
bU51bWJlcihjZWxsKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCitpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtp
bmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9pZCogcCkKIHsKICAgICBpZiAoIW1f
YmxvY2stPmlzQXRvbShwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0xp
dmUobWFya2luZ1ZlcnNpb24sIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworICAg
IHJldHVybiBpc0xpdmUobWFya2luZ1ZlcnNpb24sIGlzTWFya2luZywgc3RhdGljX2Nhc3Q8Y29u
c3QgSGVhcENlbGwqPihwKSk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYWxsb2NhdGVk
VmVyc2lvbiAhPSBzcGFjZSgpLT5hbGxvY2F0ZWRWZXJzaW9uKCk7Cit9CisKK2lubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKCkKK3sK
KyAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoaXNOZXdseUFsbG9jYXRlZFN0YWxlKCkpIHsKKyAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9
IG51bGxwdHI7CisgICAgICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IHNwYWNlKCktPmFsbG9jYXRl
ZFZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxv
Y2F0ZWQoKQoreworICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkICYmICFpc05ld2x5QWxsb2Nh
dGVkU3RhbGUoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC04Nyw5ICsx
MTksMTkgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJl
dHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6cmVzZXRNYXJraW5nVmVyc2lvbigpCitpbmxpbmUgSGVhcCogTWFya2VkQmxvY2s6Omhl
YXAoKSBjb25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKK30KKworaW5saW5lIE1hcmtl
ZFNwYWNlKiBNYXJrZWRCbG9jazo6c3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiAmaGVhcCgp
LT5vYmplY3RTcGFjZSgpOworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnNwYWNlKCkgY29uc3QKIHsKLSAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3Bh
Y2U6Om51bGxWZXJzaW9uOworICAgIHJldHVybiAmaGVhcCgpLT5vYmplY3RTcGFjZSgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDI5ICs0NTEsNiBA
QCB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogICAgICAgICB9KTsKIH0KIAotdm9pZCBNYXJr
ZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgZm9yRWFjaEFsbG9jYXRvcigK
LSAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKLSAgICAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGFsbG9j
YXRvci50YWtlTGFzdEFjdGl2ZUJsb2NrKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPmNsZWFy
TmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNv
bnRpbnVlOwotICAgICAgICB9KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdl
QWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9u
cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5
QWxsb2NhdGVkKCk7Ci0KLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBmb3JF
YWNoQmxvY2soCi0gICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgIWJsb2NrLT5jbGVhck5ld2x5
QWxsb2NhdGVkKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKExh
cmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0
ZWQoKSk7Ci0gICAgfQotfQotCiB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewog
ICAgIGlmIChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikg
ewpAQCAtNDgzLDE2ICs0NjAsMTUgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAg
ICAgICAgIH0pOwogCi0gICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX21h
cmtpbmdWZXJzaW9uKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChVTkxJS0VMWShtX21hcmtpbmdW
ZXJzaW9uID09IGluaXRpYWxWZXJzaW9uKSkgewotICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNp
b24gd3JhcC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNp
b25zIHRvIG51bGwuCisgICAgICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX21hcmtpbmdW
ZXJzaW9uKSA9PSBpbml0aWFsVmVyc2lvbikpIHsKICAgICAgICAgICAgIGZvckVhY2hCbG9jaygK
ICAgICAgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewotICAg
ICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwor
ICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJrcygpOwogICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBtX21hcmtpbmdWZXJz
aW9uID0gbmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbik7CisgICAgICAgIAogICAgICAgICBm
b3IgKExhcmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKICAg
ICAgICAgICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAgICB9CkBAIC01MTEsNiArNDg3LDIzIEBA
IHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmVu
ZE1hcmtpbmcoKQogeworICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX2FsbG9jYXRlZFZl
cnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAg
ICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgeworICAgICAgICAgICAg
ICAgIGhhbmRsZS0+cmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAg
ICAgICAgCisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gbmV4dFZlcnNpb24obV9hbGxvY2F0ZWRW
ZXJzaW9uKTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNP
ZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7
CisKKyAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3IgKExhcmdlQWxsb2Nh
dGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7Cisg
ICAgfQorCiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0
b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgIGFsbG9jYXRv
ci5lbmRNYXJraW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEzICs2NSwxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6
ZVN0ZXA7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIG51bGxWZXJzaW9uID0g
MDsgLy8gVGhlIHZlcnNpb24gb2YgZnJlc2hseSBhbGxvY2F0ZWQgYmxvY2tzLgotICAgIHN0YXRp
YyBjb25zdCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDE7IC8vIFRoZSB2ZXJzaW9uIHRo
YXQgdGhlIGhlYXAgc3RhcnRzIG91dCB3aXRoLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lv
biBpbml0aWFsVmVyc2lvbiA9IDI7IC8vIFRoZSB2ZXJzaW9uIHRoYXQgdGhlIGhlYXAgc3RhcnRz
IG91dCB3aXRoLiBTZXQgdG8gbWFrZSBzdXJlIHRoYXQgbmV4dFZlcnNpb24obnVsbFZlcnNpb24p
ICE9IGluaXRpYWxWZXJzaW9uLgogICAgIAotICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uKEhl
YXBWZXJzaW9uIHZlcnNpb24pCisgICAgc3RhdGljIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uKEhl
YXBWZXJzaW9uIHZlcnNpb24pCiAgICAgewogICAgICAgICB2ZXJzaW9uKys7CiAgICAgICAgIGlm
ICh2ZXJzaW9uID09IG51bGxWZXJzaW9uKQotICAgICAgICAgICAgdmVyc2lvbisrOworICAgICAg
ICAgICAgdmVyc2lvbiA9IGluaXRpYWxWZXJzaW9uOwogICAgICAgICByZXR1cm4gdmVyc2lvbjsK
ICAgICB9CiAgICAgCkBAIC0xNzEsNiArMTcxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdl
ZE91dChkb3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorICAgIEhlYXBWZXJzaW9u
IGFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRlZFZlcnNpb247IH0K
IAogICAgIGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdl
QWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldDsgfQpAQCAtMjE3LDYgKzIxOCw3IEBAIHByaXZhdGU6CiAKICAgICBI
ZWFwKiBtX2hlYXA7CiAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbiB7IGluaXRpYWxW
ZXJzaW9uIH07CisgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uIHsgaW5pdGlhbFZl
cnNpb24gfTsKICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICBib29sIG1faXNJdGVyYXRpbmc7
CiAgICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjA2
NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgog
I2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTYt
MTAtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrZWRC
bG9jayBzaG91bGQga25vdyB3aGF0IG9iamVjdHMgYXJlIGxpdmUgZHVyaW5nIG1hcmtpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjMwOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBkb2VzIHR3byB0aGluZ3MuIEZpcnN0LCBJIG5vdGljZWQgdGhhdCB0aGUgYXRvbWljIG1vZGUg
d2FzIHVzZWxlc3MuIEl0IG9ubHkgYWZmZWN0cyB0aGUKKyAgICAgICAgY29uY3VycmVudFRlc3RB
bmRTZXR8Q2xlYXIgbWV0aG9kcywgYW5kIHRoZSBvbmx5IGNhbGxlciBvZiB0aG9zZSBtZXRob2Rz
IGVuYWJsZWQgYXRvbWljaXR5LgorICAgICAgICBTZWNvbmQsIHRoaXMgYWRkcyBuZXcgcHJpbWl0
aXZlcyB0aGF0IGRvIGEgYnVuY2ggb2YgdGhpbmdzIGF0IG9uY2U6CisgICAgICAgIAorICAgICAg
ICAtIG1lcmdlQ291bnRBbmRDbGVhcjogbWVyZ2VzIGluIHRoZSBjb250ZW50cyBvZiBhbm90aGVy
IGJpdG1hcCwgd2hpbGUgY2xlYXJpbmcgdGhhdCBiaXRtYXAsCisgICAgICAgICAgYW5kIGNvdW50
aW5nIHRoZSB0aGUgbnVtYmVyIG9mIHNldCBiaXRzIGFzIGEgcmVzdWx0LgorICAgICAgICAKKyAg
ICAgICAgLSBzZXRDb3VudEFuZENsZWFyOiBzZXRzIHRoaXMgYml0bWFwIHRvIGhhdmUgdGhlIGNv
bnRlbnRzIG9mIGFub3RoZXIgYml0bWFwLCB3aGlsZSBjbGVhcmluZworICAgICAgICAgIHRoYXQg
Yml0bWFwLCBhbmQgY291bnRpbmcgdGhlIG51bWJlciBvZiBzZXQgYml0cy4KKyAgICAgICAgCisg
ICAgICAgIC0gc2V0QW5kQ2xlYXI6IHNldHMgdGhpcyBiaXRtYXAgdG8gaGF2ZSB0aGUgY29udGVu
dHMgb2YgYW5vdGhlciBiaXRtYXAgd2hpbGUgY2xlYXJpbmcgdGhhdAorICAgICAgICAgIGJpdG1h
cC4KKyAgICAgICAgCisgICAgICAgIEl0J3MgaW1wb3J0YW50IGZvciB0aGVzZSB0byBiZSBmYXN0
LCBzaW5jZSB0aGUgR0MgdXNlcyB0aGVtIGR1cmluZyBtYXJraW5nLgorICAgICAgICAKKyAgICAg
ICAgKiB3dGYvQml0bWFwLmg6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Qml0bWFwKToKKyAg
ICAgICAgKFdURjo6V29yZFR5cGU+OjpnZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnNl
dCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6dGVzdEFuZFNldCk6CisgICAgICAgIChXVEY6
OldvcmRUeXBlPjo6dGVzdEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb25j
dXJyZW50VGVzdEFuZFNldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y29uY3VycmVudFRl
c3RBbmRDbGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0
UG9zc2libHlVbnNldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Mp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+Ojppc0VtcHR5KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1bGwpOgorICAgICAg
ICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaWx0
ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OmZvckVhY2hTZXRCaXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdl
Q291bnRBbmRDbGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0Q291bnRBbmRDbGVh
cik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0QW5kQ2xlYXIpOgorICAgICAgICAoV1RG
Ojo9KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpoYXNoKToKKwogMjAxNi0xMC0wMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBL
ZXlib2FyZEV2ZW50LmtleSBhdHRyaWJ1dGUKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCShyZXZpc2lvbiAyMDY3NTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3
LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLWVudW0gQml0bWFwQXRvbWljTW9kZSB7Ci0gICAg
Ly8gVGhpcyBtYWtlcyBjb25jdXJyZW50VGVzdEFuZFNldCBiZWhhdmUganVzdCBsaWtlIHRlc3RB
bmRTZXQuCi0gICAgQml0bWFwTm90QXRvbWljLAotCi0gICAgLy8gVGhpcyBtYWtlcyBjb25jdXJy
ZW50VGVzdEFuZFNldCB1c2UgY29tcGFyZUFuZFN3YXAsIHNvIHRoYXQgaXQncwotICAgIC8vIGF0
b21pYyBldmVuIHdoZW4gdXNlZCBjb25jdXJyZW50bHkuCi0gICAgQml0bWFwQXRvbWljCi19Owot
Ci10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2Rl
ID0gQml0bWFwTm90QXRvbWljLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQzMl90PgordGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+CiBjbGFz
cyBCaXRtYXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIApAQCAtNTksOCAr
NTAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG5leHRQb3NzaWJseVVuc2V0KHNpemVfdCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhcihzaXplX3QpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKLSAgICBp
bnQ2NF90IGZpbmRSdW5PZlplcm9zKHNpemVfdCkgY29uc3Q7Ci0gICAgc2l6ZV90IGNvdW50KHNp
emVfdCA9IDApIGNvbnN0OworICAgIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxl
bmd0aCkgY29uc3Q7CisgICAgc2l6ZV90IGNvdW50KHNpemVfdCBzdGFydCA9IDApIGNvbnN0Owog
ICAgIHNpemVfdCBpc0VtcHR5KCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRnVsbCgpIGNvbnN0Owog
ICAgIApAQCAtNzEsNiArNjIsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmKSBjb25zdDsKICAgICAKKyAg
ICBzaXplX3QgbWVyZ2VDb3VudEFuZENsZWFyKEJpdG1hcCYpOworICAgIHNpemVfdCBzZXRDb3Vu
dEFuZENsZWFyKEJpdG1hcCYpOworICAgIHZvaWQgc2V0QW5kQ2xlYXIoQml0bWFwJik7CisgICAg
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICAKQEAgLTkwLDI2ICs4NSwyNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6YXJyYXk8V29yZFR5cGUsIHdvcmRzPiBiaXRzOwogfTsKIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdv
cmRUeXBlPjo6Qml0bWFwKCkKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpCaXRtYXAoKQog
ewogICAgIGNsZWFyQWxsKCk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuKSBj
b25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Z2V0KHNpemVfdCBuKSBjb25z
dAogewogICAgIHJldHVybiAhIShiaXRzW24gLyB3b3JkU2l6ZV0gJiAob25lIDw8IChuICUgd29y
ZFNpemUpKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdv
cmRTaXplXSB8PSAob25lIDw8IChuICUgd29yZFNpemUpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjpzZXQoc2l6ZV90IG4sIGJvb2wgdmFsdWUpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpzZXQoc2l6ZV90IG4sIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlKQogICAgICAg
ICBzZXQobik7CkBAIC0xMTcsOCArMTEyLDggQEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIGF0b21pY01vZAogICAgICAgICBjbGVhcihuKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojp0
ZXN0QW5kU2V0KHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVz
dEFuZFNldChzaXplX3QgbikKIHsKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29y
ZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTEyNyw4ICsxMjIs
OCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojp0ZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCiB7
CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3Qg
aW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xMzcsMTQgKzEzMiw5IEBAIGlubGluZSBib29sIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBl
bmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCiB7Ci0g
ICAgaWYgKGF0b21pY01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAgICAgICByZXR1cm4gdGVz
dEFuZFNldChuKTsKLQotICAgIEFTU0VSVChhdG9taWNNb2RlID09IEJpdG1hcEF0b21pYyk7Ci0g
ICAgCiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXpl
X3QgaW5kZXggPSBuIC8gd29yZFNpemU7CiAgICAgV29yZFR5cGUqIHdvcmRQdHIgPSBiaXRzLmRh
dGEoKSArIGluZGV4OwpAQCAtMTU3LDE0ICsxNDcsOSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQogewotICAgIGlm
IChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAgICAgcmV0dXJuIHRlc3RBbmRD
bGVhcihuKTsKLQotICAgIEFTU0VSVChhdG9taWNNb2RlID09IEJpdG1hcEF0b21pYyk7Ci0gICAg
CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXplX3Qg
aW5kZXggPSBuIC8gd29yZFNpemU7CiAgICAgV29yZFR5cGUqIHdvcmRQdHIgPSBiaXRzLmRhdGEo
KSArIGluZGV4OwpAQCAtMTc3LDI4ICsxNjIsMjggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46
OmNsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXIo
c2l6ZV90IG4pCiB7CiAgICAgYml0c1tuIC8gd29yZFNpemVdICY9IH4ob25lIDw8IChuICUgd29y
ZFNpemUpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCit0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhckFsbCgpCiB7CiAgICAgbWVtc2V0KGJpdHMuZGF0YSgp
LCAwLCBzaXplb2YoYml0cykpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0
bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXpl
X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5
VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpuZXh0UG9zc2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgaWYgKCF+
Yml0c1tzdGFydCAvIHdvcmRTaXplXSkKICAgICAgICAgcmV0dXJuICgoc3RhcnQgLyB3b3JkU2l6
ZSkgKyAxKSAqIHdvcmRTaXplOwogICAgIHJldHVybiBzdGFydCArIDE7CiB9CiAKLXRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBpbnQ2NF90
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0CiB7CiAgICAgaWYgKCFydW5MZW5ndGgpIAogICAgICAgICBydW5MZW5ndGgg
PSAxOyAKQEAgLTIxNyw4ICsyMDIsOCBAQCBpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljCiAgICAgcmV0dXJuIC0xOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y291bnQo
c2l6ZV90IHN0YXJ0KSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpj
b3VudChzaXplX3Qgc3RhcnQpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAg
Zm9yICggOyAoc3RhcnQgJSB3b3JkU2l6ZSk7ICsrc3RhcnQpIHsKQEAgLTIzMCw4ICsyMTUsOCBA
QCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmIChiaXRzW2ldKQpAQCAtMjM5
LDggKzIyNCw4IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0
b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6
ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRnVsbCgpIGNvbnN0CiB7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAofmJpdHNbaV0p
CkBAIC0yNDgsMzAgKzIzMywzMCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6bWVyZ2UoY29u
c3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdl
KGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jk
czsgKytpKQogICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdv
cmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gJj0gb3RoZXIuYml0
c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpleGNsdWRlKGNvbnN0IEJpdG1hcCYgb3RoZXIp
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpleGNsdWRlKGNvbnN0IEJpdG1hcCYg
b3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAg
ICBiaXRzW2ldICY9IH5vdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmM+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwg
V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmIGZ1bmMpIGNvbnN0CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1
bmMmIGZ1bmMpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytp
KSB7CiAgICAgICAgIFdvcmRUeXBlIHdvcmQgPSBiaXRzW2ldOwpAQCAtMjg2LDggKzI3MSwzOSBA
QCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgfQogfQogCi10
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0
eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNN
b2RlLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXpl
X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2VDb3VudEFuZENsZWFyKEJpdG1h
cCYgb3RoZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3b3JkczsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0
YXRpY19jYXN0PHVuc2lnbmVkPihiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV0pKTsKKyAgICAgICAg
b3RoZXIuYml0c1tpXSA9IDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3Qg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0Q291bnRBbmRDbGVhcihCaXRtYXAmIG90
aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd29yZHM7ICsraSkgeworICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYml0c1tpXSA9IG90aGVyLmJpdHNbaV0pKTsKKyAgICAgICAgb3RoZXIu
Yml0c1tpXSA9IDA7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OnNldEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CisgICAgICAgIGJpdHNbaV0gPSBv
dGhlci5iaXRzW2ldOworICAgICAgICBvdGhlci5iaXRzW2ldID0gMDsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBv
dGhlcikgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsK
ICAgICAgICAgaWYgKGJpdHNbaV0gIT0gb3RoZXIuYml0c1tpXSkKQEAgLTI5NiwxNCArMzEyLDE0
IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IEJpdG1hcCYgb3Ro
ZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9KGNv
bnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB1bnNpZ25lZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKK3RlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB1bnNpZ25lZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpoYXNoKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290556</attachid>
            <date>2016-10-03 19:45:24 -0700</date>
            <delta_ts>2016-10-04 11:18:31 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58751</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBA
QAorMjAxNi0xMC0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFy
a2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgd2Ugd291bGQgZm9yZ2V0IHdoaWNoIG9iamVjdHMgYXJl
IGxpdmUgdGhlIG1vbWVudCB3ZSBzdGFydGVkIGNvbGxlY3Rpb24uCisgICAgICAgIFRoYXQncyBi
ZWNhdXNlIHRoZSBmbGlwIGF0IHRoZSBiZWdpbm5pbmcgY2xlYXJzIGFsbCBtYXJrIGJpdHMuCisg
ICAgICAgIAorICAgICAgICBCdXQgd2UgYWxyZWFkeSBoYXZlIGEgZmFjaWxpdHkgZm9yIHRyYWNr
aW5nIG9iamVjdHMgdGhhdCBhcmUgbGl2ZS1idXQtbm90LW1hcmtlZC4gSXQncyBjYWxsZWQKKyAg
ICAgICAgbmV3bHlBbGxvY2F0ZWQuIFNvLCBpbnN0ZWFkIG9mIGNsZWFyaW5nIG1hcmsgYml0cywg
d2Ugd2FudCB0byBqdXN0IHRyYW5zZmVyIHRoZW0gdG8KKyAgICAgICAgbmV3bHlBbGxvY2F0ZWQu
IFRoZW4gd2Ugd2FudCB0byBjbGVhciBhbGwgbmV3bHlBbGxvY2F0ZWQgYWZ0ZXIgR0MuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGltcGxlbWVudHMgc3VjaCBhbiBhcHByb2FjaCwgYWxvbmcgd2l0
aCBzb21lIG9idmlvdXMgb3B0aW1pemF0aW9uczoKKyAgICAgICAgCisgICAgICAgIC0gV2UgZG9u
J3QgcmVhbGx5IGNsZWFyIGFsbCBuZXdseUFsbG9jdGVkIGFmdGVyIEdDLiBXZSBqdXN0IHZlcnNp
b24gdGhlbSwgbGlrZSB3ZSB2ZXJzaW9uCisgICAgICAgICAgbWFyayBiaXRzLgorICAgICAgICAK
KyAgICAgICAgLSBJZiBhbGwgY2VsbHMgaW4gYSBibG9jayBhcmUgbGl2ZSwgd2Ugc2V0IHRoZSBh
bGxvY2F0ZWQgYml0IGZvciB0aGF0IGJsb2NrIGluc3RlYWQgb2YKKyAgICAgICAgICBjcmVhdGlu
ZyBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgbGVhZHMgdG8gc29tZSBp
bnRlcmVzdGluZyBhbGdvcml0aG1zLiBBbnkgYWxnb3JpdGhtIHRoYXQgcmVhc29ucyBhYm91dCBs
aXZlbmVzcyBuZWVkcyB0bworICAgICAgICBjb25zaWRlciBzb21lIHdpbGQgYXJyYW5nZW1lbnRz
IG9mIHZlcnNpb25zOgorICAgICAgICAKKyAgICAgICAgLSBJZiBtYXJrcyBhcmUgY3VycmVudCwg
eW91IGNhbiBqdXN0IHVzZSB0aGUgbWFya3MgZGlyZWN0bHkuCisgICAgICAgIAorICAgICAgICAt
IElmIHRoZSBtYXJrcyBhcmUgZXhhY3RseSBvbmUgdmVyc2lvbiBvbGQgYW5kIHdlJ3JlIG1hcmtp
bmcsIHRoZW4gaXQgbWVhbnMgdGhhdCB3ZSBsb2dpY2FsbHkKKyAgICAgICAgICBzaG91bGQgaGF2
ZSBtZXJnZWQgbWFya3MgaW50byBuZXdseUFsbG9jYXRlZCwgc28gbWFya3MgaXMgb3VyIGN1cnJl
bnQgdmlldyBvZgorICAgICAgICAgIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICAKKyAgICAgICAg
LSBJZiBuZXdseUFsbG9jYXRlZCBhcmUgY3VycmVudCwgd2UgY2FuIHVzZSB0aGVtLCBidXQgaWYg
dGhleSBhcmUgbm90LCB0aGVuIHdlIHNob3VsZCBpZ25vcmUKKyAgICAgICAgICB0aGVtLgorICAg
ICAgICAKKyAgICAgICAgU2VlIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coKSBmb3IgdGhl
IGZ1bGwgYXJyYW5nZW1lbnQgb2YgY2FzZXMgd2UgaGF2ZSB0byBoYW5kbGUuCisgICAgICAgIAor
ICAgICAgICBUbyB2YWxpZGF0ZSB0aGlzIGNoYW5nZSwgd2Ugbm93IHJ1biB0aGUgY29uc2VydmF0
aXZlIHNjYW4gYWZ0ZXIgdGhlIGJlZ2luTWFya2luZyBmbGlwLiBBbmQgaXQKKyAgICAgICAgdG90
YWxseSB3b3JrcyEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBodWdlIHN0ZXAgdG93YXJk
cyBjb25jdXJyZW50IEdDLiBJdCBtZWFucyB0aGF0IHdlIG91Z2h0IHRvIGJlIGFibGUgdG8gcnVu
IHRoZQorICAgICAgICBhbGxvY2F0b3Igd2hpbGUgbWFya2luZy4gU2luY2Ugd2UgYWxyZWFkeSBz
ZXBhcmF0ZWx5IG1hZGUgaXQgcG9zc2libGUgdG8gcnVuIHRoZSBiYXJyaWVyCisgICAgICAgIHdo
aWxlIG1hcmtpbmcsIHRoaXMgbWVhbnMgdGhhdCB3ZSdyZSBwcmV0dHkgbXVjaCByZWFkeSBmb3Ig
c29tZSBzZXJpb3VzIGNvbmN1cnJlbmN5IGFjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
aXMgc2hvd2luZyBhIDAuOCUgTG9uZ1NwaWRlciByZWdyZXNzaW9uIGJ1dCBuZXV0cmFsIG9uIGV2
ZXJ5dGhpbmcgZWxzZSAoYWN0dWFsbHksIEkgc2VlCisgICAgICAgIG1heWJlLWZhc3RlciByZXN1
bHRzIG9uIFN1blNwaWRlci9PY3RhbmUvS3Jha2VuKS4gIEknbSBzdGlsbCBydW5uaW5nIGJyb3dz
ZXIgYmVuY2htYXJrcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAg
KiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNvZGVC
bG9ja1NldDo6bWFyayk6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6Cisg
ICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2xlYXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2lu
dGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFu
ZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxl
Y3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFz
dENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJr
U2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya3MpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmFsbG9jYXRlZFZlcnNpb24pOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXds
eUFsbG9jYXRlZFN0YWxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aGFz
QW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpoZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6cmVzZXRNYXJraW5nVmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6Om1hcmtpbmdWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorCiAyMDE2LTEwLTAzICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEdldE1hcEJ1Y2tldCBub2RlIHNob3VsZCBzcGVj
dWxhdGUgb24gdGhlIHR5cGUgb2YgaXRzICdrZXknIGNoaWxkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ0NSw2ICs0NDUsNyBAQAogCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVk
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEY2NEIyN0Ex
QTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY0
RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8q
IEFpckFyZ0lubGluZXMuaCAqLzsgfTsKKwkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENv
ZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVz
LmggKi87IH07CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmNwcCAqLzsgfTsKQEAgLTI2OTcsNiArMjY5OCw3IEBACiAJCTBGNjRCMjc3MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRCMjc4
MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJBcmdJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyQXJnSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBB
MTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlQmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxp
dHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxhYmls
aXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTMwMyw2ICs1MzA1LDcgQEAKIAkJCQkwRjFDM0REOTFCQkNFMDlFMDBF
NTIzRTQgLyogQ2VsbFN0YXRlLmggKi8sCiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8q
IENvZGVCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENv
ZGVCbG9ja1NldC5oICovLAorCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxv
Y2tTZXRJbmxpbmVzLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNl
cnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29u
c2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgKi8sCkBAIC03OTE3LDYgKzc5MjAsNyBAQAogCQkJCUJDMThDNDFDMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEgLyog
SlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDY3NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
a0hhc2guaCIKLSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5o
IgpAQCAtNzYsNiArNzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczsKK2NsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBA
IC0xMzExLDM4ICsxMzExLDYgQEAgaW5saW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0V2Vh
a2x5SAogICAgIG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJr
KGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQotewot
ICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7Ci0gICAgLy8gV2UgaGF2ZSB0byBjaGVjayBm
b3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJr
ZXJzLgotICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
YW5kaWRhdGVDb2RlQmxvY2spOwotICAgIAotICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9m
IHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBnby4KLSAgICAvLyAwICsgMSA9IDEKLSAgICAvLyAt
MSArIDEgPSAwCi0gICAgaWYgKHZhbHVlICsgMSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0
ZUNvZGVCbG9jayk7IAotICAgIGlmICghbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9j
aykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQgQ29k
ZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRv
IHJlY292ZXIgZ3JhY2VmdWxseSBpZiB3ZSBmb3JnZXQgdG8gZXhlY3V0ZSBhIGJhcnJpZXIgZm9y
IGEKLSAgICAvLyBDb2RlQmxvY2sgdGhhdCBkb2VzIHZhbHVlIHByb2ZpbGluZy4gVGhpcyBpcyBw
cm9iYWJseSBvdmVya2lsbCwgYnV0IHdlCi0gICAgLy8gaGF2ZSBhbHdheXMgZG9uZSBpdC4KLSAg
ICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOwotCi0gICAg
bV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmb3JFYWNoQ29kZUJs
b2NrKEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNywxNiArMTA3LDE3IEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpjb250
YWlucyhjb25zdCBMb2NrSG8KICAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNv
ZGVCbG9jaykgfHwgbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9jdXJy
ZW50bHlFeGVjdXRpbmcuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tT
ZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoSGVhcCogaGVhcCkK
K3ZvaWQgQ29kZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCog
aGVhcCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmVtZW1iZXJpbmcgIiwgbV9jdXJyZW50bHlFeGVjdXRpbmcu
c2l6ZSgpLCAiIGNvZGUgYmxvY2tzLlxuIik7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9j
ayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQogICAgICAgICBoZWFwLT53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrKTsKK30KIAotICAgIC8vIEl0J3Mgc2FmZSB0byBjbGVhciB0aGlzIHNldCBiZWNhdXNl
IHdlIHdvbid0IGRlbGV0ZSB0aGUgQ29kZUJsb2NrcwotICAgIC8vIGluIGl0IHVudGlsIHRoZSBu
ZXh0IEdDLCBhbmQgd2UnbGwgcmVjb21wdXRlIGl0IGF0IHRoYXQgdGltZS4KK3ZvaWQgQ29kZUJs
b2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpCit7CiAgICAgbV9jdXJyZW50bHlFeGVj
dXRpbmcuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAKICAgICAvLyBBZGQgYWxsIGN1cnJlbnRseSBleGVjdXRpbmcgQ29kZUJsb2NrcyB0
byB0aGUgcmVtZW1iZXJlZCBzZXQgdG8gYmUgCiAgICAgLy8gcmUtc2Nhbm5lZCBkdXJpbmcgdGhl
IG5leHQgY29sbGVjdGlvbi4KLSAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGlu
Z0NvZGVCbG9ja3MoSGVhcCopOworICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0
aW5nKEhlYXAqKTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsKIAogICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9j
ayk7CiAgICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwg
dm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQoreworICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQo
KSk7CisgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBh
cmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgorICAgIHVpbnRwdHJfdCB2YWx1ZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOworICAgIAor
ICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBn
by4KKyAgICAvLyAwICsgMSA9IDEKKyAgICAvLyAtMSArIDEgPSAwCisgICAgaWYgKHZhbHVlICsg
MSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAgIGlmICghbV9v
bGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250
YWlucyhjb2RlQmxvY2spKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrKGxvY2tlciwgY29k
ZUJsb2NrKTsKK30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tI
b2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSGVhcFV0aWwuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIK
ICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKQEAgLTM4OCwxOCArMzg5LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdj
U3RhcnRUaW1lLAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcihtX3Nsb3RW
aXNpdG9yKTsKICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygq
dGhpcyk7CiAgICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Nj
b3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252ZXJnZW5jZSIpOwotICAgICAg
ICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJrIGJp
dHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1h
cmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICAg
ICAgewotICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgq
dGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwotICAgICAgICAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgICAgICAgICAg
Z2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9w
LCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMo
Y29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3Rz
KGNvbnNlcnZhdGl2ZVJvb3RzKTsKLSAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIERGRzo6cmVtZW1iZXJDb2RlQmxvY2tzKCptX3ZtKTsKQEAgLTQ2Myw5ICs0NTQsMjQg
QEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQYXJh
bGxlbE1vZGVFbmFibGVyIGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAg
ICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgeworICAgICAgICAg
ICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1h
cmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOworICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9v
dHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMpOworICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290
cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJl
Z2lzdGVycyk7CisgICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJv
b3RzKTsKKyAgICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8g
Y29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0
IGFyZQorICAgICAgICAgICAgLy8gcnVubmluZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5lZWQg
dG8gYmUgc3VyZSB0byBkbyBpdCAqYWZ0ZXIqIHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAgICAg
ICAgICAgIC8vIHNvIHRoYXQgd2Uga25vdyBmb3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMgYSBi
YXJyaWVyLgorICAgICAgICAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2NrcygpOworICAgICAgICB9CisKICAgICAgICAgdmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQo
KTsKICAgICAgICAgdmlzaXRTbWFsbFN0cmluZ3MoKTsKLSAgICAgICAgdmlzaXRDb25zZXJ2YXRp
dmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CiAgICAgICAgIHZpc2l0UHJvdGVjdGVkT2JqZWN0
cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEFyZ3VtZW50QnVmZmVycyhoZWFwUm9v
dFZpc2l0b3IpOwogICAgICAgICB2aXNpdEV4Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3IpOwpAQCAt
NTI0LDExICs1MzAsNiBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgICAgIG1fY29k
ZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewotICAg
ICAgICBUaW1pbmdTY29wZSBjbGVhck5ld2x5QWxsb2NhdGVkVGltaW5nU2NvcGUoKnRoaXMsICJt
X29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQiKTsKLSAgICAgICAgbV9vYmplY3RTcGFj
ZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgfQotICAgIAotICAgIHsKICAgICAgICAgVGlt
aW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5iZWdp
bk1hcmtpbmciKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAgICB9
CkBAIC0xMDYwLDYgKzEwNjEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1w
bChIZWFwCiAKICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgY2xlYXJDdXJyZW50bHlFeGVj
dXRpbmdDb2RlQmxvY2tzKCk7CiAKICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKQEAgLTEyMDMsNyArMTIwNSwxMiBAQCB2b2lkIEhlYXA6
Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3Vy
cmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCiB7Ci0gICAgbV9jb2RlQmxvY2tzLT53cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOworICAgIG1fY29kZUJsb2Nr
cy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOworfQorCit2b2lkIEhlYXA6
OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCit7CisgICAgbV9jb2RlQmxvY2tz
LT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogfQogCiB2b2lkIEhlYXA6OnByZXBhcmVGb3JB
bGxvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgdm9p
ZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNl
dCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisgICAgICAg
IEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hhciogcG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcgKzg4
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0Nh
bmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
Y2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJl
dmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1BvaW50
ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCog
cG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIpKQog
ICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlz
aW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1Myw4IEBAIGJvb2wgTWFya2VkQWxsb2Nh
dG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVD
aGVjayA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNp
emUoKTsgKytpbmRleCkgewogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1f
YmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGb3Jj
ZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50
aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkpCi0gICAg
ICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnNldE5l
ZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAg
ICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVz
b2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93
ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRWZXJz
aW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3RO
dWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBA
IC0yMDcsNyArMjA4LDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZQogdGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6RW1wdHlNb2RlIGVtcHR5TW9kZSwgRGVz
dHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U2NyaWJi
bGVNb2RlIHNjcmliYmxlTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVw
SGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQoU3dlZXBNb2RlIHN3ZWVwTW9kZSkKIHsKLSAg
ICBpZiAobV9uZXdseUFsbG9jYXRlZCkKKyAgICBpZiAoaGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRo
U3dlZXAoKSkKICAgICAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5
TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIEhhc05ld2x5QWxsb2NhdGVkPihz
d2VlcE1vZGUpOwogICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1v
ZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBEb2VzTm90SGF2ZU5ld2x5QWxsb2Nh
dGVkPihzd2VlcE1vZGUpOwogfQpAQCAtMjc3LDYgKzI3OCw3IEBAIHZvaWQgTWFya2VkQmxvY2s6
OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKICAgICAKICAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0
ZWQpOwogICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6Qml0bWFw
PGF0b21zUGVyQmxvY2s+PigpOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2Jq
ZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAKICAgICBTZXROZXdseUFsbG9jYXRlZEZ1
bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKQEAgLTI5NSwx
MCArMjk3LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIGFs
bG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7Ci0gICAgbV9ibG9jay0+Y2xl
YXJNYXJrcygpOworICAgIG1fYmxvY2stPm1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX2Jsb2Nr
LT5jbGVhckhhc0FueU1hcmtlZCgpOworICAgIG1fYmxvY2stPm1fbWFya2luZ1ZlcnNpb24gPSBo
ZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKTsKICAgICBtX3dlYWtTZXQubGFz
dENoYW5jZVRvRmluYWxpemUoKTsKLQotICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBt
X25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBoZWFw
KCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOwogICAgIHN3ZWVwKCk7CiB9CiAK
QEAgLTMwNyw3ICszMTEsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXN1bWVB
bGxvCiAgICAgQVNTRVJUKCFhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpOwogICAgIEFT
U0VSVCghaXNGcmVlTGlzdGVkKCkpOwogCi0gICAgaWYgKCFtX25ld2x5QWxsb2NhdGVkKSB7Cisg
ICAgaWYgKCFoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpKSB7CiAgICAgICAgIC8vIFRo
aXMgbWVhbnMgd2UgaGFkIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBibG9jayB3aGVuIHdlIHN0b3Bw
ZWQgYWxsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CiAgICAgfQpAQCAtMzQ2
LDI0ICszNTAsODAgQEAgdm9pZCBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KEhlYXBWZQog
ewogICAgIEFTU0VSVCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOwogICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKGFyZU1hcmtzU3RhbGUobWFya2lu
Z1ZlcnNpb24pKSB7Ci0gICAgICAgIGNsZWFyTWFya3MobWFya2luZ1ZlcnNpb24pOwotICAgICAg
ICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBp
biB0aGlzIGJsb2NrLgotICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5k
Q2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOworICAgIGlmICghYXJlTWFy
a3NTdGFsZShtYXJraW5nVmVyc2lvbikpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAo
aGFuZGxlKCkuYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKCZoYW5kbGUoKSkKKyAgICAgICAgfHwg
IW1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKG1hcmtpbmdWZXJzaW9uKSkgeworICAg
ICAgICAvLyBXZSBhbHJlYWR5IGtub3cgdGhhdCB0aGUgYmxvY2sgaXMgZnVsbCBhbmQgaXMgYWxy
ZWFkeSByZWNvZ25pemVkIGFzIHN1Y2gsIG9yIHRoYXQgdGhlCisgICAgICAgIC8vIGJsb2NrIGRp
ZCBub3Qgc3Vydml2ZSB0aGUgcHJldmlvdXMgR0MuIFNvLCB3ZSBjYW4gY2xlYXIgbWFyayBiaXRz
IHRoZSBvbGQgZmFzaGlvbmVkCisgICAgICAgIC8vIHdheS4gTm90ZSB0aGF0IGl0J3MgcG9zc2li
bGUgZm9yIHN1Y2ggYSBibG9jayB0byBoYXZlIG5ld2x5QWxsb2NhdGVkIHdpdGggYW4gdXAtdG8t
CisgICAgICAgIC8vIGRhdGUgdmVyc2lvbiEgSWYgaXQgZG9lcywgdGhlbiB3ZSB3YW50IHRvIGxl
YXZlIHRoZSBuZXdseUFsbG9jYXRlZCBhbG9uZSwgc2luY2UgdGhhdAorICAgICAgICAvLyBtZWFu
cyB0aGF0IHdlIGhhZCBhbGxvY2F0ZWQgaW4gdGhpcyBwcmV2aW91c2x5IGVtcHR5IGJsb2NrIGJ1
dCBkaWQgbm90IGZpbGwgaXQgdXAsIHNvCisgICAgICAgIC8vIHdlIGNyZWF0ZWQgYSBuZXdseUFs
bG9jYXRlZC4KKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIE9uZSB3YXkgb3IgYW5vdGhlciwgd2UnbGwgdXBkYXRlIG5ld2x5QWxsb2NhdGVkLgor
ICAgICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RT
cGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKKyAgICAgICAgaWYgKFdURjo6Qml0bWFwPGF0b21z
UGVyQmxvY2s+KiBuZXdseUFsbG9jYXRlZCA9IGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQuZ2V0
KCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAgICAgIGlmIChoYW5kbGUo
KS5tX2FsbG9jYXRlZFZlcnNpb24gPT0gYWxsb2NhdGVkVmVyc2lvbikgeworICAgICAgICAgICAg
ICAgIC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBuZXdseUFsbG9jYXRlZC4g
SWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAgICAgICAgLy8gdGhlbiBk
ZWxldGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAg
Y291bnQgPSBuZXdseUFsbG9jYXRlZC0+bWVyZ2VDb3VudEFuZENsZWFyKG1fbWFya3MpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBjb250ZW50
cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1hcmtlZC4gSWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBv
ZgorICAgICAgICAgICAgICAgIC8vIGJpdHMgdGhlbiBkZWxldGUgbmV3bHlBbGxvY2F0ZWQgYW5k
IHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICAgICAgY291bnQgPSBuZXdseUFsbG9jYXRlZC0+
c2V0Q291bnRBbmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghY291bnQpCisgICAgICAgICAgICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZCA9IG51
bGxwdHI7CisgICAgICAgICAgICBlbHNlIGlmIChjb3VudCA9PSBoYW5kbGUoKS5jZWxsc1BlckJs
b2NrKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+c2V0SXNBbGxv
Y2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5tX25ld2x5
QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMuIElmIGl0J3MgdGhlIGZ1
bGwgc2V0LCB0aGVuIHNldCBhbGxvY2F0ZWQgYW5kIGNsZWFyIHRoZQorICAgICAgICAgICAgLy8g
Yml0cy4gSWYgbm90LCB0aGVuIGFsbG9jYXRlIG5ld2x5QWxsb2NhdGVkIGFuZCBzcGxhdCBtYXJr
ZWQgaW50byBpdCB3aGlsZSBjbGVhcmluZworICAgICAgICAgICAgLy8gbWFya2VkLgorICAgICAg
ICAgICAgdW5zaWduZWQgY291bnQgPSBtX21hcmtzLmNvdW50KCk7CisgICAgICAgICAgICBpZiAo
Y291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gaGFuZGxlKCkuY2VsbHNQZXJC
bG9jaygpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKCZoYW5k
bGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3
bHlBbGxvY2F0ZWQtPnNldEFuZENsZWFyKG1fbWFya3MpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNp
b24gPSBhbGxvY2F0ZWRWZXJzaW9uOwogICAgIH0KKyAgICBjbGVhckhhc0FueU1hcmtlZCgpOwor
ICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAgbV9tYXJraW5nVmVyc2lvbiA9IG1hcmtp
bmdWZXJzaW9uOworICAgIAorICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMg
dG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCisgICAgaGFuZGxlKCkuYWxsb2NhdG9y
KCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsK
IH0KIAotdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcygpCit2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OnJlc2V0QWxsb2NhdGVkKCkKIHsKLSAgICBjbGVhck1hcmtzKHZtKCktPmhlYXAub2Jq
ZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVs
bHB0cjsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247
CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24pCit2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtzKCkKIHsKLSAgICBtX21hcmtzLmNs
ZWFyQWxsKCk7Ci0gICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKLSAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOwotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsKKyAgICAvLyBX
ZSB3YW50IGFib3V0VG9NYXJrU2xvdygpIHRvIHNlZSB3aGF0IHRoZSBtYXJrIGJpdHMgd2VyZSBh
ZnRlciB0aGUgbGFzdCBjb2xsZWN0aW9uLiBJdCB1c2VzCisgICAgLy8gdGhlIHZlcnNpb24gbnVt
YmVyIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIG1hcmtzIGhhdmluZyBhbHJlYWR5IGJlZW4g
c3RhbGUgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCksIG9yIGp1c3Qgc3RhbGUgbm93IHRo
YXQgYmVnaW5NYXJraW5nKCkgYnVtcGVkIHRoZSB2ZXJzaW9uLiBJZiB3ZSBoYXZlIGEgdmVyc2lv
bgorICAgIC8vIHdyYXBhcm91bmQsIHRoZW4gd2Ugd2lsbCBjYWxsIHRoaXMgbWV0aG9kIGJlZm9y
ZSByZXNldHRpbmcgdGhlIHZlcnNpb24gdG8gbnVsbC4gV2hlbiB0aGUKKyAgICAvLyB2ZXJzaW9u
IGlzIG51bGwsIGFib3V0VG9NYXJrU2xvdygpIHdpbGwgYXNzdW1lIHRoYXQgdGhlIG1hcmtzIHdl
cmUgbm90IHN0YWxlIGFzIG9mIGJlZm9yZQorICAgIC8vIGJlZ2luTWFya2luZygpLiBIZW5jZSB0
aGUgbmVlZCB0byB3aGlwIHRoZSBtYXJrcyBpbnRvIHNoYXBlLgorICAgIGlmIChhcmVNYXJrc1N0
YWxlKCkpCisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9u
ID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApA
QCAtNDI1LDYgKzQ4NSwxMSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21B
bGxvCiAgICAgbV9hbGxvY2F0b3ItPnJlbW92ZUJsb2NrKHRoaXMpOwogfQogCit2b2lkIE1hcmtl
ZEJsb2NrOjpzZXROZWVkc0Rlc3RydWN0aW9uKCkKK3sKKyAgICBtX25lZWRzRGVzdHJ1Y3Rpb24g
PSBoYW5kbGUoKS5uZWVkc0Rlc3RydWN0aW9uKCk7Cit9CisKIHZvaWQgTWFya2VkQmxvY2s6Okhh
bmRsZTo6ZGlkQWRkVG9BbGxvY2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVf
dCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKQEAgLTQ0MiwxMCArNTA3LDkgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpkaWRBZGRUb0FsbG9jYQogICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVh
cENlbGw6OkpTQ2VsbCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3Ry
dWN0aW9uID09IERvZXNOb3ROZWVkRGVzdHJ1Y3Rpb24pOwogICAgIAotICAgIGJsb2NrKCkubV9u
ZWVkc0Rlc3RydWN0aW9uID0gbmVlZHNEZXN0cnVjdGlvbigpOworICAgIGJsb2NrKCkuc2V0TmVl
ZHNEZXN0cnVjdGlvbigpOwogICAgIAotICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJr
ZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemU7Ci0gICAgZG91YmxlIG1hcmtDb3VudEJp
YXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxv
Y2spOworICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9j
a1V0aWxpemF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKCkpOwogICAgIAogICAgIC8vIFRoZSBtYXJr
IGNvdW50IGJpYXMgc2hvdWxkIGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgogICAg
IFJFTEVBU0VfQVNTRVJUKG1hcmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MTZfdD46Om1pbigpKSk7CkBAIC00NjYsMTIgKzUzMCwxMiBAQCB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZyb21BCiAKIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlKGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIHJldHVybiBp
c0xpdmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOwor
ICAgIHJldHVybiBpc0xpdmUoc3BhY2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgc3BhY2UoKS0+aXNN
YXJraW5nKCksIGNlbGwpOwogfQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNl
bGwoY29uc3Qgdm9pZCogcCkKIHsKLSAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFwLm9i
amVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgcCk7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwo
c3BhY2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgc3BhY2UoKS0+aXNNYXJraW5nKCksIHApOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQmxvY2suaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBNYXJrZWRBbGxvY2F0
b3I7CitjbGFzcyBNYXJrZWRTcGFjZTsKIAogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVk
ZWYgdWludDMyX3QgSGVhcFZlcnNpb247CkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgogCiAg
ICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIEhlYXAq
IGhlYXAoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIE1hcmtlZFNwYWNlKiBzcGFjZSgpIGNvbnN0
OwogICAgICAgICBWTSogdm0oKSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwog
ICAgICAgICAgICAgCkBAIC0xNDEsMTEgKzE0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBz
dG9wQWxsb2NhdGluZyhjb25zdCBGcmVlTGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVB
bGxvY2F0aW5nKCk7IC8vIENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZv
ciBzb21lIG5vbi1jb2xsZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAg
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMg
bm9uLW51bGwgCi0gICAgICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZh
bHNlIG90aGVyd2lzZS4KLSAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAg
ICAgICAgICAKICAgICAgICAgc2l6ZV90IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNp
Z25lZCBjZWxsc1BlckJsb2NrKCk7CisgICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JB
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBk
ZXN0cnVjdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25z
dDsKQEAgLTE1Myw5ICsxNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgc2l6
ZV90IG1hcmtDb3VudCgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwotICAgICAgICAgICAgCi0g
ICAgICAgIGlubGluZSBib29sIGlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29u
c3QgSGVhcENlbGwqKTsKLSAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCopOworICAgICAgICAKKyAgICAgICAgaW5saW5l
IGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywg
Y29uc3QgSGVhcENlbGwqKTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVy
c2lvbiBtYXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IHZvaWQqKTsKIAogICAg
ICAgICBib29sIGlzTGl2ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNl
bGwoY29uc3Qgdm9pZCopOwpAQCAtMTY0LDggKzE2NCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgc2V0TmV3bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3
bHlBbGxvY2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBoYXNBbnlO
ZXdseUFsbG9jYXRlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQorICAg
ICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxv
Y2F0ZWRWZXJzaW9uOyB9CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc05ld2x5QWxs
b2NhdGVkU3RhbGUoKSBjb25zdDsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBo
YXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCgpOworICAgICAgICBpbmxpbmUgYm9vbCBoYXNB
bnlOZXdseUFsbG9jYXRlZCgpOworICAgICAgICAKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRl
ZCgpOworICAgICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJh
dGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2Vs
bChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CkBA
IC0xODUsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAg
ICBIYW5kbGUoSGVhcCYsIHZvaWQqKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAg
dGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNl
bGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCkBA
IC0yMzEsNiArMjM4LDggQEAgcHVibGljOgogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxs
b2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7Cisg
ICAgICAgIAorICAgICAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb247CiAgICAgICAg
ICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsK
QEAgLTI0MCw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAg
ICAgCiAgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhlYXAoKSBjb25zdDsK
KyAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9v
bCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGJs
b2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODksMTAgQEAgcHVibGljOgogICAgICAg
ICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVz
dHJ1Y3Rpb247IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtpbmdWZXJzaW9uKCk7
CisgICAgLy8gVGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2UgaXQgYXMgYSBuby1v
cCB0aGF0IHRvdWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAgIHZvaWQgc2V0TmVl
ZHNEZXN0cnVjdGlvbigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJrcygpOwogICAgIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNp
emUgLSAxOwpAQCAtMjg5LDEzICszMDMsMTMgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBhdG9tcygp
OwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1hcmtzKEhl
YXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7
CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOworICAgIAorICAgIGlubGluZSBib29s
IG1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uKTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRt
YXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9j
az4gbV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgIExvY2sgbV9s
b2NrOwpAQCAtNTM0LDE1ICs1NDgsNiBAQCBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpjbGVhck5lCiAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51bWJl
cihwKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1fbmV3
bHlBbGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0
IHZvaWQqIHApCiB7CiAgICAgQVNTRVJUKE1hcmtlZEJsb2NrOjppc0F0b21BbGlnbmVkKHApKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5l
cy5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDM0IEBACiAKICNp
bmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmNlbGxzUGVyQmxvY2soKQoreworICAgIHJldHVybiBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2Fk
IC8gY2VsbFNpemUoKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om1hcmtzQ29udmV5
TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQoreworICAg
IC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGVzZSBpcyB0cnVlOgorICAgIC8vIC0g
V2UganVzdCBjcmVhdGVkIHRoZSBibG9jayBhbmQgc28gdGhlIGJpdHMgYXJlIGNsZWFyIGFscmVh
ZHkuCisgICAgLy8gLSBUaGlzIGJsb2NrIGhhcyBvYmplY3RzIG1hcmtlZCBkdXJpbmcgdGhlIGxh
c3QgR0MsIGFuZCBzbyBpdHMgdmVyc2lvbiB3YXMgdXAtdG8tZGF0ZSBqdXN0CisgICAgLy8gICBi
ZWZvcmUgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBkaWQgYmVnaW5NYXJraW5nKCkuIFRoaXMgbWVh
bnMgdGhhdCBhbnkgb2JqZWN0cyB0aGF0IGhhdmUgCisgICAgLy8gICB0aGVpciBtYXJrIGJpdCBz
ZXQgYXJlIHZhbGlkIG9iamVjdHMgdGhhdCB3ZXJlIG5ldmVyIGRlbGV0ZWQsIGFuZCBzbyBhcmUg
Y2FuZGlkYXRlcyBmb3IKKyAgICAvLyAgIG1hcmtpbmcgaW4gYW55IGNvbnNlcnZhdGl2ZSBzY2Fu
LiBVc2luZyBvdXIgamFyZ29uLCB0aGV5IGFyZSAibGl2ZSIuCisgICAgLy8gLSBXZSBkaWQgfjJe
MzIgY29sbGVjdGlvbnMgYW5kIHJvdGF0ZWQgdGhlIHZlcnNpb24gYmFjayB0byBudWxsLCBzbyB3
ZSBuZWVkZWQgdG8gaGFyZC1yZXNldAorICAgIC8vICAgZXZlcnl0aGluZy4gSWYgdGhlIG1hcmtz
IGhhZCBiZWVuIHN0YWxlLCB3ZSB3b3VsZCBoYXZlIGNsZWFyZWQgdGhlbS4gU28sIHdlIGNhbiBi
ZSBzdXJlIHRoYXQKKyAgICAvLyAgIGFueSBzZXQgbWFyayBiaXQgcmVmbGVjdHMgb2JqZWN0cyBt
YXJrZWQgZHVyaW5nIGxhc3QgR0MsIGkuZS4gImxpdmUiIG9iamVjdHMuCisgICAgLy8gSXQgd291
bGQgYmUgYWJzdXJkIHRvIHVzZSB0aGlzIG1ldGhvZCB3aGVuIG5vdCBjb2xsZWN0aW5nLCBzaW5j
ZSB0aGlzIHNwZWNpYWwgIm9uZSB2ZXJzaW9uCisgICAgLy8gYmFjayIgc3RhdGUgb25seSBtYWtl
cyBzZW5zZSB3aGVuIHdlJ3JlIGluIGEgY29uY3VycmVudCBjb2xsZWN0aW9uIGFuZCBoYXZlIHRv
IGJlCisgICAgLy8gY29uc2VydmF0aXZlLgorICAgIHJldHVybiBtX21hcmtpbmdWZXJzaW9uID09
IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgorICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4dFZl
cnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247Cit9CisKK2lubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
biwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVCgh
aXNGcmVlTGlzdGVkKCkpOwogICAgIApAQCAtMzksMjIgKzYzLDQ4IEBAIGlubGluZSBib29sIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwotICAgIAog
ICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAotICAgIGlmIChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJs
b2NrKCk7CisgICAgCisgICAgaWYgKGJsb2NrLmFyZU1hcmtzU3RhbGUoKSkgeworICAgICAgICBp
ZiAoIWlzTWFya2luZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFi
bG9jay5tYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgcmV0dXJuIGJsb2NrLmlzTWFy
a2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5tX21hcmtzLmdldChibG9jay5hdG9tTnVtYmVy
KGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2Vs
bChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCB2b2lkKiBwKQogewogICAgIGlmICghbV9ibG9jay0+
aXNBdG9tKHApKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShtYXJr
aW5nVmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CisgICAgcmV0dXJu
IGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFw
Q2VsbCo+KHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXds
eUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9u
ICE9IHNwYWNlKCktPmFsbG9jYXRlZFZlcnNpb24oKTsKK30KKworaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXAoKQoreworICAgIGlm
ICghbV9uZXdseUFsbG9jYXRlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc05l
d2x5QWxsb2NhdGVkU3RhbGUoKSkgeworICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0
cjsKKyAgICAgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gc3BhY2UoKS0+YWxsb2NhdGVkVmVyc2lv
bigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCgp
Cit7CisgICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0ZWQgJiYgIWlzTmV3bHlBbGxvY2F0ZWRTdGFs
ZSgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTg3LDkgKzEzNywxOSBA
QCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0
ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpy
ZXNldE1hcmtpbmdWZXJzaW9uKCkKK2lubGluZSBIZWFwKiBNYXJrZWRCbG9jazo6aGVhcCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICZ2bSgpLT5oZWFwOworfQorCitpbmxpbmUgTWFya2VkU3BhY2Uq
IE1hcmtlZEJsb2NrOjpzcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVj
dFNwYWNlKCk7Cit9CisKK2lubGluZSBNYXJrZWRTcGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BhY2UoKSBjb25zdAogewotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVs
bFZlcnNpb247CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNwYWNlKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMjkgKzQ1MSw2IEBAIHZvaWQg
TWFya2VkU3BhY2U6OnNocmluaygpCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1hcmtlZFNwYWNl
OjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAgICBmb3JFYWNoQWxsb2NhdG9yKAotICAgICAg
ICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewot
ICAgICAgICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gYWxsb2NhdG9yLnRh
a2VMYXN0QWN0aXZlQmxvY2soKSkKLSAgICAgICAgICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFs
bG9jYXRlZCgpOwotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
Ci0gICAgICAgIH0pOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0
aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUo
KTsgKytpKQotICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKTsKLQotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIGZvckVhY2hCbG9j
aygKLSAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0
ZWQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoTGFyZ2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsK
LSAgICB9Ci19Ci0KIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7CiAgICAgaWYg
KG1faGVhcC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CkBAIC00
ODMsMTYgKzQ2MCwxNSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAg
fSk7CiAKLSAgICAgICAgbV9tYXJraW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1Zl
cnNpb24pOwotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fbWFya2luZ1ZlcnNpb24g
PT0gaW5pdGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFw
LWFyb3VuZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8g
bnVsbC4KKyAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24p
ID09IGluaXRpYWxWZXJzaW9uKSkgewogICAgICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAg
ICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgICAg
ICAgICAgICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNldE1hcmtzKCk7CiAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBu
ZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9uKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFy
Z2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAg
ICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAgIH0KQEAgLTUxMSw2ICs0ODcsMjMgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2lu
ZygpCiB7CisgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbikg
PT0gaW5pdGlhbFZlcnNpb24pKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAg
IFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7CisgICAgICAgICAgICAgICAgaGFu
ZGxlLT5yZXNldEFsbG9jYXRlZCgpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgICAgICAK
KyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBuZXh0VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24p
OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZv
clRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQorICAg
ICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKworICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQorICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKKyAgICB9CisK
ICAgICBmb3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxs
b2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1h
cmtpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
cmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTMgKzY1LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsK
ICAgICAKICAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBU
aGUgdmVyc2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCi0gICAgc3RhdGljIGNvbnN0
IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUg
aGVhcCBzdGFydHMgb3V0IHdpdGguCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRp
YWxWZXJzaW9uID0gMjsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdp
dGguIFNldCB0byBtYWtlIHN1cmUgdGhhdCBuZXh0VmVyc2lvbihudWxsVmVyc2lvbikgIT0gaW5p
dGlhbFZlcnNpb24uCiAgICAgCi0gICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNp
b24gdmVyc2lvbikKKyAgICBzdGF0aWMgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNp
b24gdmVyc2lvbikKICAgICB7CiAgICAgICAgIHZlcnNpb24rKzsKICAgICAgICAgaWYgKHZlcnNp
b24gPT0gbnVsbFZlcnNpb24pCi0gICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgICAgICB2
ZXJzaW9uID0gaW5pdGlhbFZlcnNpb247CiAgICAgICAgIHJldHVybiB2ZXJzaW9uOwogICAgIH0K
ICAgICAKQEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRv
dWJsZSBkZWFkbGluZSk7CiAgICAgCiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9CisgICAgSGVhcFZlcnNpb24gYWxsb2Nh
dGVkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkVmVyc2lvbjsgfQogCiAgICAg
Y29uc3QgVmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0
aW9uc051cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0OyB9CkBAIC0yMTcsNiArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1f
aGVhcDsKICAgICBIZWFwVmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24g
fTsKKyAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9
OwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBi
b29sIG1faXNNYXJraW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MCBAQAorMjAxNi0xMC0wMyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1hcmtlZEJsb2NrIHNo
b3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFya2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzA5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGRvZXMg
dHdvIHRoaW5ncy4gRmlyc3QsIEkgbm90aWNlZCB0aGF0IHRoZSBhdG9taWMgbW9kZSB3YXMgdXNl
bGVzcy4gSXQgb25seSBhZmZlY3RzIHRoZQorICAgICAgICBjb25jdXJyZW50VGVzdEFuZFNldHxD
bGVhciBtZXRob2RzLCBhbmQgdGhlIG9ubHkgY2FsbGVyIG9mIHRob3NlIG1ldGhvZHMgZW5hYmxl
ZCBhdG9taWNpdHkuCisgICAgICAgIFNlY29uZCwgdGhpcyBhZGRzIG5ldyBwcmltaXRpdmVzIHRo
YXQgZG8gYSBidW5jaCBvZiB0aGluZ3MgYXQgb25jZToKKyAgICAgICAgCisgICAgICAgIC0gbWVy
Z2VDb3VudEFuZENsZWFyOiBtZXJnZXMgaW4gdGhlIGNvbnRlbnRzIG9mIGFub3RoZXIgYml0bWFw
LCB3aGlsZSBjbGVhcmluZyB0aGF0IGJpdG1hcCwKKyAgICAgICAgICBhbmQgY291bnRpbmcgdGhl
IHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMgYXMgYSByZXN1bHQuCisgICAgICAgIAorICAgICAgICAt
IHNldENvdW50QW5kQ2xlYXI6IHNldHMgdGhpcyBiaXRtYXAgdG8gaGF2ZSB0aGUgY29udGVudHMg
b2YgYW5vdGhlciBiaXRtYXAsIHdoaWxlIGNsZWFyaW5nCisgICAgICAgICAgdGhhdCBiaXRtYXAs
IGFuZCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHNldCBiaXRzLgorICAgICAgICAKKyAgICAgICAg
LSBzZXRBbmRDbGVhcjogc2V0cyB0aGlzIGJpdG1hcCB0byBoYXZlIHRoZSBjb250ZW50cyBvZiBh
bm90aGVyIGJpdG1hcCB3aGlsZSBjbGVhcmluZyB0aGF0CisgICAgICAgICAgYml0bWFwLgorICAg
ICAgICAKKyAgICAgICAgSXQncyBpbXBvcnRhbnQgZm9yIHRoZXNlIHRvIGJlIGZhc3QsIHNpbmNl
IHRoZSBHQyB1c2VzIHRoZW0gZHVyaW5nIG1hcmtpbmcuCisgICAgICAgIAorICAgICAgICAqIHd0
Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpCaXRtYXApOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmdldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0KToKKyAg
ICAgICAgKFdURjo6V29yZFR5cGU+Ojp0ZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+Ojp0ZXN0QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvbmN1cnJlbnRU
ZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpjbGVhcik6CisgICAgICAgIChXVEY6Oldv
cmRUeXBlPjo6Y2xlYXJBbGwpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om5leHRQb3NzaWJs
eVVuc2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyk6CisgICAg
ICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omlz
RW1wdHkpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmlzRnVsbCk6CisgICAgICAgIChXVEY6
OldvcmRUeXBlPjo6bWVyZ2UpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmZpbHRlcik6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZXhjbHVkZSk6CisgICAgICAgIChXVEY6OldvcmRUeXBl
Pjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6bWVyZ2VDb3VudEFu
ZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRDb3VudEFuZENsZWFyKToKKyAg
ICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChXVEY6Oj0pOgor
ICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2gpOgorCiAyMDE2LTEwLTAzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEtleWJvYXJk
RXZlbnQua2V5IGF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcsNyBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBCaXRtYXBBdG9taWNNb2RlIHsKLSAgICAvLyBUaGlz
IG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IGJlaGF2ZSBqdXN0IGxpa2UgdGVzdEFuZFNldC4K
LSAgICBCaXRtYXBOb3RBdG9taWMsCi0KLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0
QW5kU2V0IHVzZSBjb21wYXJlQW5kU3dhcCwgc28gdGhhdCBpdCdzCi0gICAgLy8gYXRvbWljIGV2
ZW4gd2hlbiB1c2VkIGNvbmN1cnJlbnRseS4KLSAgICBCaXRtYXBBdG9taWMKLX07Ci0KLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUgPSBCaXRt
YXBOb3RBdG9taWMsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KIGNsYXNzIEJpdG1h
cCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgCkBAIC01OSw4ICs1MCw4IEBA
IHB1YmxpYzoKICAgICBzaXplX3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25zdDsKICAg
ICB2b2lkIGNsZWFyKHNpemVfdCk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwotICAgIGludDY0X3Qg
ZmluZFJ1bk9mWmVyb3Moc2l6ZV90KSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6ZV90ID0g
MCkgY29uc3Q7CisgICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBj
b25zdDsKKyAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6
ZV90IGlzRW1wdHkoKSBjb25zdDsKICAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7CiAgICAgCkBA
IC03MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAg
ICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAorICAgIHNpemVf
dCBtZXJnZUNvdW50QW5kQ2xlYXIoQml0bWFwJik7CisgICAgc2l6ZV90IHNldENvdW50QW5kQ2xl
YXIoQml0bWFwJik7CisgICAgdm9pZCBzZXRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIApAQCAtOTAsMjYgKzg1LDI2IEBAIHByaXZhdGU6
CiAgICAgc3RkOjphcnJheTxXb3JkVHlwZSwgd29yZHM+IGJpdHM7CiB9OwogCi10ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBX
b3JkVHlwZT4KLWlubGluZSBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjpCaXRtYXAoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OkJpdG1hcCgpCiB7CiAgICAg
Y2xlYXJBbGwoKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8
Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90IG4pIGNvbnN0Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90IG4pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkp
KTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRv
bWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCiB7CiAgICAgYml0c1tuIC8gd29yZFNpemVd
IHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChz
aXplX3QgbiwgYm9vbCB2YWx1ZSkKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNl
dChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIHNldChu
KTsKQEAgLTExNyw4ICsxMTIsOCBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kCiAgICAgICAgIGNsZWFyKG4pOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRT
ZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kU2V0
KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7
CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTI3LDggKzEyMiw4IEBAIGlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKICAgICBX
b3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9
IG4gLyB3b3JkU2l6ZTsKQEAgLTEzNywxNCArMTMyLDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRU
eXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKIHsKLSAgICBpZiAo
YXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0QW5kU2V0
KG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRvbWljKTsKLSAgICAKICAg
ICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBpbmRl
eCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9IGJpdHMuZGF0YSgpICsg
aW5kZXg7CkBAIC0xNTcsMTQgKzE0Nyw5IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y29u
Y3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCiB7Ci0gICAgaWYgKGF0b21p
Y01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAgICAgICByZXR1cm4gdGVzdEFuZENsZWFyKG4p
OwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRvbWljKTsKLSAgICAKICAgICBX
b3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9
IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9IGJpdHMuZGF0YSgpICsgaW5k
ZXg7CkBAIC0xNzcsMjggKzE2MiwyOCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXIo
c2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3Qg
bikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwgKG4gJSB3b3JkU2l6ZSkp
OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQoYml0cy5kYXRhKCksIDAsIHNp
emVvZihiaXRzKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9t
aWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpuZXh0UG9zc2libHlVbnNldChz
aXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om5l
eHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBpZiAoIX5iaXRzW3N0
YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1cm4gKChzdGFydCAvIHdvcmRTaXplKSArIDEp
ICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5
cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGludDY0X3QgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkg
Y29uc3QKIHsKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7IApA
QCAtMjE3LDggKzIwMiw4IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9t
aWMKICAgICByZXR1cm4gLTE7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb3VudChzaXplX3Qg
c3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNp
emVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKCA7
IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkgewpAQCAtMjMwLDggKzIxNSw4IEBAIGlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKGJpdHNbaV0pCkBAIC0yMzksOCArMjI0
LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVy
biB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9k
ZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmICh+Yml0c1tpXSkKQEAgLTI0
OCwzMCArMjMzLDMwIEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRt
YXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2UoY29uc3Qg
Qml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kp
CiAgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNb
aV0gJj0gfm90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKK2lubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVu
YykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAg
ICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBAIC0yODYsOCArMjcxLDM5IEBAIGlubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICB9CiB9CiAKLXRlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1l
IFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdv
cmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUNvdW50QW5kQ2xlYXIoQml0bWFwJiBvdGhl
cikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXSkpOworICAgICAgICBvdGhlci5i
aXRzW2ldID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRDb3VudEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCit7
CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3Jk
czsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVu
c2lnbmVkPihiaXRzW2ldID0gb3RoZXIuYml0c1tpXSkpOworICAgICAgICBvdGhlci5iaXRzW2ld
ID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgYml0c1tpXSA9IG90aGVyLmJp
dHNbaV07CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KK30KKwordGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAg
ICBpZiAoYml0c1tpXSAhPSBvdGhlci5iaXRzW2ldKQpAQCAtMjk2LDE0ICszMTIsMTQgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiB0cnVlOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29u
c3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0
bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAK
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUs
IHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290624</attachid>
            <date>2016-10-04 11:18:31 -0700</date>
            <delta_ts>2016-10-06 17:31:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60070</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMSBA
QAorMjAxNi0xMC0wMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFy
a2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgd2Ugd291bGQgZm9yZ2V0IHdoaWNoIG9iamVjdHMgYXJl
IGxpdmUgdGhlIG1vbWVudCB3ZSBzdGFydGVkIGNvbGxlY3Rpb24uCisgICAgICAgIFRoYXQncyBi
ZWNhdXNlIHRoZSBmbGlwIGF0IHRoZSBiZWdpbm5pbmcgY2xlYXJzIGFsbCBtYXJrIGJpdHMuCisg
ICAgICAgIAorICAgICAgICBCdXQgd2UgYWxyZWFkeSBoYXZlIGEgZmFjaWxpdHkgZm9yIHRyYWNr
aW5nIG9iamVjdHMgdGhhdCBhcmUgbGl2ZS1idXQtbm90LW1hcmtlZC4gSXQncyBjYWxsZWQKKyAg
ICAgICAgbmV3bHlBbGxvY2F0ZWQuIFNvLCBpbnN0ZWFkIG9mIGNsZWFyaW5nIG1hcmsgYml0cywg
d2Ugd2FudCB0byBqdXN0IHRyYW5zZmVyIHRoZW0gdG8KKyAgICAgICAgbmV3bHlBbGxvY2F0ZWQu
IFRoZW4gd2Ugd2FudCB0byBjbGVhciBhbGwgbmV3bHlBbGxvY2F0ZWQgYWZ0ZXIgR0MuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGltcGxlbWVudHMgc3VjaCBhbiBhcHByb2FjaCwgYWxvbmcgd2l0
aCBzb21lIG9idmlvdXMgb3B0aW1pemF0aW9uczoKKyAgICAgICAgCisgICAgICAgIC0gV2UgZG9u
J3QgcmVhbGx5IGNsZWFyIGFsbCBuZXdseUFsbG9jdGVkIGFmdGVyIEdDLiBXZSBqdXN0IHZlcnNp
b24gdGhlbSwgbGlrZSB3ZSB2ZXJzaW9uCisgICAgICAgICAgbWFyayBiaXRzLgorICAgICAgICAK
KyAgICAgICAgLSBJZiBhbGwgY2VsbHMgaW4gYSBibG9jayBhcmUgbGl2ZSwgd2Ugc2V0IHRoZSBh
bGxvY2F0ZWQgYml0IGZvciB0aGF0IGJsb2NrIGluc3RlYWQgb2YKKyAgICAgICAgICBjcmVhdGlu
ZyBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgbGVhZHMgdG8gc29tZSBp
bnRlcmVzdGluZyBhbGdvcml0aG1zLiBBbnkgYWxnb3JpdGhtIHRoYXQgcmVhc29ucyBhYm91dCBs
aXZlbmVzcyBuZWVkcyB0bworICAgICAgICBjb25zaWRlciBzb21lIHdpbGQgYXJyYW5nZW1lbnRz
IG9mIHZlcnNpb25zOgorICAgICAgICAKKyAgICAgICAgLSBJZiBtYXJrcyBhcmUgY3VycmVudCwg
eW91IGNhbiBqdXN0IHVzZSB0aGUgbWFya3MgZGlyZWN0bHkuCisgICAgICAgIAorICAgICAgICAt
IElmIHRoZSBtYXJrcyBhcmUgZXhhY3RseSBvbmUgdmVyc2lvbiBvbGQgYW5kIHdlJ3JlIG1hcmtp
bmcsIHRoZW4gaXQgbWVhbnMgdGhhdCB3ZSBsb2dpY2FsbHkKKyAgICAgICAgICBzaG91bGQgaGF2
ZSBtZXJnZWQgbWFya3MgaW50byBuZXdseUFsbG9jYXRlZCwgc28gbWFya3MgaXMgb3VyIGN1cnJl
bnQgdmlldyBvZgorICAgICAgICAgIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICAKKyAgICAgICAg
LSBJZiBuZXdseUFsbG9jYXRlZCBhcmUgY3VycmVudCwgd2UgY2FuIHVzZSB0aGVtLCBidXQgaWYg
dGhleSBhcmUgbm90LCB0aGVuIHdlIHNob3VsZCBpZ25vcmUKKyAgICAgICAgICB0aGVtLgorICAg
ICAgICAKKyAgICAgICAgU2VlIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coKSBmb3IgdGhl
IGZ1bGwgYXJyYW5nZW1lbnQgb2YgY2FzZXMgd2UgaGF2ZSB0byBoYW5kbGUuCisgICAgICAgIAor
ICAgICAgICBUbyB2YWxpZGF0ZSB0aGlzIGNoYW5nZSwgd2Ugbm93IHJ1biB0aGUgY29uc2VydmF0
aXZlIHNjYW4gYWZ0ZXIgdGhlIGJlZ2luTWFya2luZyBmbGlwLiBBbmQgaXQKKyAgICAgICAgdG90
YWxseSB3b3JrcyEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBodWdlIHN0ZXAgdG93YXJk
cyBjb25jdXJyZW50IEdDLiBJdCBtZWFucyB0aGF0IHdlIG91Z2h0IHRvIGJlIGFibGUgdG8gcnVu
IHRoZQorICAgICAgICBhbGxvY2F0b3Igd2hpbGUgbWFya2luZy4gU2luY2Ugd2UgYWxyZWFkeSBz
ZXBhcmF0ZWx5IG1hZGUgaXQgcG9zc2libGUgdG8gcnVuIHRoZSBiYXJyaWVyCisgICAgICAgIHdo
aWxlIG1hcmtpbmcsIHRoaXMgbWVhbnMgdGhhdCB3ZSdyZSBwcmV0dHkgbXVjaCByZWFkeSBmb3Ig
c29tZSBzZXJpb3VzIGNvbmN1cnJlbmN5IGFjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
aXMgc2hvd2luZyBhIDAuOCUgTG9uZ1NwaWRlciByZWdyZXNzaW9uIGJ1dCBuZXV0cmFsIG9uIGV2
ZXJ5dGhpbmcgZWxzZSAoYWN0dWFsbHksIEkgc2VlCisgICAgICAgIG1heWJlLWZhc3RlciByZXN1
bHRzIG9uIFN1blNwaWRlci9PY3RhbmUvS3Jha2VuKS4gIEknbSBzdGlsbCBydW5uaW5nIGJyb3dz
ZXIgYmVuY2htYXJrcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjptYXJr
KTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAgICAgICAg
KiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkNvZGVC
bG9ja1NldDo6bWFyayk6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6Cisg
ICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jvb3RzKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2xlYXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmplY3RQb2lu
dGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6SGFu
ZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxl
Y3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bGFz
dENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpy
ZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJr
U2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxsb2NhdGVk
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya3MpOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1hcmtzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmFsbG9jYXRlZFZlcnNpb24pOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXds
eUFsbG9jYXRlZFN0YWxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aGFz
QW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpoZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwYWNlKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6cmVzZXRNYXJraW5nVmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbik6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6Om1hcmtpbmdWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorCiAyMDE2LTEwLTAzICBTYWFtIEJhcmF0aSAgPHNi
YXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEdldE1hcEJ1Y2tldCBub2RlIHNob3VsZCBzcGVj
dWxhdGUgb24gdGhlIHR5cGUgb2YgaXRzICdrZXknIGNoaWxkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTQ0NSw2ICs0NDUsNyBAQAogCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVk
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEY2NEIyN0Ex
QTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY0
RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8q
IEFpckFyZ0lubGluZXMuaCAqLzsgfTsKKwkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENv
ZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVz
LmggKi87IH07CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAx
N0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmls
aXR5LmNwcCAqLzsgfTsKQEAgLTI2OTcsNiArMjY5OCw3IEBACiAJCTBGNjRCMjc3MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRCMjc4
MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY0RUFG
MjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJBcmdJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyQXJnSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBB
MTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlQmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkYx
ODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxp
dHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxhYmls
aXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTMwMyw2ICs1MzA1LDcgQEAKIAkJCQkwRjFDM0REOTFCQkNFMDlFMDBF
NTIzRTQgLyogQ2VsbFN0YXRlLmggKi8sCiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8q
IENvZGVCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENv
ZGVCbG9ja1NldC5oICovLAorCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxv
Y2tTZXRJbmxpbmVzLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNl
cnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29u
c2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgKi8sCkBAIC03OTE3LDYgKzc5MjAsNyBAQAogCQkJCUJDMThDNDFDMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEgLyog
SlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDY3NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
a0hhc2guaCIKLSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5o
IgpAQCAtNzYsNiArNzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczsKK2NsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNs
YXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBA
IC0xMzExLDM4ICsxMzExLDYgQEAgaW5saW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0V2Vh
a2x5SAogICAgIG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJr
KGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQotewot
ICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7Ci0gICAgLy8gV2UgaGF2ZSB0byBjaGVjayBm
b3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJr
ZXJzLgotICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihj
YW5kaWRhdGVDb2RlQmxvY2spOwotICAgIAotICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9m
IHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBnby4KLSAgICAvLyAwICsgMSA9IDEKLSAgICAvLyAt
MSArIDEgPSAwCi0gICAgaWYgKHZhbHVlICsgMSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0
ZUNvZGVCbG9jayk7IAotICAgIGlmICghbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9j
aykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQgQ29k
ZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
LXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRv
IHJlY292ZXIgZ3JhY2VmdWxseSBpZiB3ZSBmb3JnZXQgdG8gZXhlY3V0ZSBhIGJhcnJpZXIgZm9y
IGEKLSAgICAvLyBDb2RlQmxvY2sgdGhhdCBkb2VzIHZhbHVlIHByb2ZpbGluZy4gVGhpcyBpcyBw
cm9iYWJseSBvdmVya2lsbCwgYnV0IHdlCi0gICAgLy8gaGF2ZSBhbHdheXMgZG9uZSBpdC4KLSAg
ICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOwotCi0gICAg
bV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmb3JFYWNoQ29kZUJs
b2NrKEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNywxNiArMTA3LDE3IEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpjb250
YWlucyhjb25zdCBMb2NrSG8KICAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNv
ZGVCbG9jaykgfHwgbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9jdXJy
ZW50bHlFeGVjdXRpbmcuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tT
ZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoSGVhcCogaGVhcCkK
K3ZvaWQgQ29kZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCog
aGVhcCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgZGF0YUxvZygiUmVtZW1iZXJpbmcgIiwgbV9jdXJyZW50bHlFeGVjdXRpbmcu
c2l6ZSgpLCAiIGNvZGUgYmxvY2tzLlxuIik7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9j
ayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQogICAgICAgICBoZWFwLT53cml0ZUJhcnJpZXIoY29k
ZUJsb2NrKTsKK30KIAotICAgIC8vIEl0J3Mgc2FmZSB0byBjbGVhciB0aGlzIHNldCBiZWNhdXNl
IHdlIHdvbid0IGRlbGV0ZSB0aGUgQ29kZUJsb2NrcwotICAgIC8vIGluIGl0IHVudGlsIHRoZSBu
ZXh0IEdDLCBhbmQgd2UnbGwgcmVjb21wdXRlIGl0IGF0IHRoYXQgdGltZS4KK3ZvaWQgQ29kZUJs
b2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpCit7CiAgICAgbV9jdXJyZW50bHlFeGVj
dXRpbmcuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw5IEBAIHB1Ymxp
YzoKICAgICAKICAgICAvLyBBZGQgYWxsIGN1cnJlbnRseSBleGVjdXRpbmcgQ29kZUJsb2NrcyB0
byB0aGUgcmVtZW1iZXJlZCBzZXQgdG8gYmUgCiAgICAgLy8gcmUtc2Nhbm5lZCBkdXJpbmcgdGhl
IG5leHQgY29sbGVjdGlvbi4KLSAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGlu
Z0NvZGVCbG9ja3MoSGVhcCopOworICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0
aW5nKEhlYXAqKTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsKIAogICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9j
ayk7CiAgICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwg
dm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQoreworICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQo
KSk7CisgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBh
cmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgorICAgIHVpbnRwdHJfdCB2YWx1ZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOworICAgIAor
ICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBn
by4KKyAgICAvLyAwICsgMSA9IDEKKyAgICAvLyAtMSArIDEgPSAwCisgICAgaWYgKHZhbHVlICsg
MSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAgIGlmICghbV9v
bGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250
YWlucyhjb2RlQmxvY2spKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrKGxvY2tlciwgY29k
ZUJsb2NrKTsKK30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tI
b2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSGVhcFV0aWwuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIK
ICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKQEAgLTM4OCwxOCArMzg5LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdj
U3RhcnRUaW1lLAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcihtX3Nsb3RW
aXNpdG9yKTsKICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygq
dGhpcyk7CiAgICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Nj
b3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252ZXJnZW5jZSIpOwotICAgICAg
ICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJrIGJp
dHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1h
cmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICAg
ICAgewotICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgq
dGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwotICAgICAgICAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgICAgICAgICAg
Z2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9w
LCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMo
Y29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3Rz
KGNvbnNlcnZhdGl2ZVJvb3RzKTsKLSAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIERGRzo6cmVtZW1iZXJDb2RlQmxvY2tzKCptX3ZtKTsKQEAgLTQ2Myw5ICs0NTQsMjQg
QEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQYXJh
bGxlbE1vZGVFbmFibGVyIGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAg
ICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgeworICAgICAgICAg
ICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1h
cmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOworICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9v
dHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMpOworICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290
cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJl
Z2lzdGVycyk7CisgICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJv
b3RzKTsKKyAgICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8g
Y29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0
IGFyZQorICAgICAgICAgICAgLy8gcnVubmluZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5lZWQg
dG8gYmUgc3VyZSB0byBkbyBpdCAqYWZ0ZXIqIHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAgICAg
ICAgICAgIC8vIHNvIHRoYXQgd2Uga25vdyBmb3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMgYSBi
YXJyaWVyLgorICAgICAgICAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2NrcygpOworICAgICAgICB9CisKICAgICAgICAgdmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQo
KTsKICAgICAgICAgdmlzaXRTbWFsbFN0cmluZ3MoKTsKLSAgICAgICAgdmlzaXRDb25zZXJ2YXRp
dmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CiAgICAgICAgIHZpc2l0UHJvdGVjdGVkT2JqZWN0
cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEFyZ3VtZW50QnVmZmVycyhoZWFwUm9v
dFZpc2l0b3IpOwogICAgICAgICB2aXNpdEV4Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3IpOwpAQCAt
NTI0LDExICs1MzAsNiBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgICAgIG1fY29k
ZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewotICAg
ICAgICBUaW1pbmdTY29wZSBjbGVhck5ld2x5QWxsb2NhdGVkVGltaW5nU2NvcGUoKnRoaXMsICJt
X29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQiKTsKLSAgICAgICAgbV9vYmplY3RTcGFj
ZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgfQotICAgIAotICAgIHsKICAgICAgICAgVGlt
aW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5iZWdp
bk1hcmtpbmciKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAgICB9
CkBAIC0xMDYwLDYgKzEwNjEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1w
bChIZWFwCiAKICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgY2xlYXJDdXJyZW50bHlFeGVj
dXRpbmdDb2RlQmxvY2tzKCk7CiAKICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVw
ZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKQEAgLTEyMDMsNyArMTIwNSwxMiBAQCB2b2lkIEhlYXA6
Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3Vy
cmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCiB7Ci0gICAgbV9jb2RlQmxvY2tzLT53cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOworICAgIG1fY29kZUJsb2Nr
cy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOworfQorCit2b2lkIEhlYXA6
OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCit7CisgICAgbV9jb2RlQmxvY2tz
LT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogfQogCiB2b2lkIEhlYXA6OnByZXBhcmVGb3JB
bGxvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92
aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAg
dm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgdm9p
ZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNl
dCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisgICAgICAg
IEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hhciogcG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcgKzg4
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0Nh
bmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
Y2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJl
dmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1BvaW50
ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCog
cG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIpKQog
ICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJ
KHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVu
dGFsU3dlZXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsNyBAQCBib29sIElu
Y3JlbWVudGFsU3dlZXBlcjo6c3dlZXBOZXh0QmxvY2soCiAgICAgCiAgICAgaWYgKGJsb2NrKSB7
CiAgICAgICAgIERlZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhtX3ZtLT5oZWFwKTsKKyAgICAgICAg
YmxvY2stPnN3ZWVwSGFzQW55TmV3bHlBbGxvY2F0ZWQoKTsKICAgICAgICAgYmxvY2stPnN3ZWVw
KCk7CiAgICAgICAgIG1fdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mcmVlT3JTaHJpbmtCbG9jayhi
bG9jayk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MywxMSArNTMsOCBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChkb3Vi
bGUgCiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOwogICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsKICAg
ICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07Ci0gICAg
ICAgIGlmIChibG9jaykgewotICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBt
ZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KLSAgICAgICAg
ICAgIGlmIChibG9jay0+YXJlTWFya3NTdGFsZSgpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5i
bG9jaygpLnJlc2V0TWFya2luZ1ZlcnNpb24oKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYmxv
Y2spCisgICAgICAgICAgICBibG9jay0+YmxvY2soKS5zZXROZWVkc0Rlc3RydWN0aW9uKCk7CiAg
ICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAgICAgICAgIGlmIChpdGVyc1NpbmNl
TGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jlc29sdXRpb24pIHsKICAgICAgICAg
ICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CkBAIC00MzYsNyArNDMzLDkgQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkKIHsK
ICAgICBtX3Vuc3dlcHQuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgp
IHsKLSAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAgICAgICAg
YmxvY2stPnN3ZWVwSGFzQW55TmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgICAgIGJsb2NrLT5z
d2VlcCgpOwogICAgICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3
IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIE1hcmtlZEJsb2NrOjp0cnlDcmUKIAogTWFya2VkQmxv
Y2s6OkhhbmRsZTo6SGFuZGxlKEhlYXAmIGhlYXAsIHZvaWQqIGJsb2NrU3BhY2UpCiAgICAgOiBt
X3dlYWtTZXQoaGVhcC52bSgpLCBDZWxsQ29udGFpbmVyKCkpCisgICAgLCBtX2FsbG9jYXRlZFZl
cnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5v
dE51bGwsIGJsb2NrU3BhY2UpIE1hcmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAK
QEAgLTIwNyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhl
bHBlCiB0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBE
ZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3Jp
YmJsZU1vZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dl
ZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewot
ICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNBbnlOZXdseUFsbG9jYXRlZCgp
KQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBk
ZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9k
ZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVz
dHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3
ZWVwTW9kZSk7CiB9CkBAIC0yNzcsNiArMjc4LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxl
OjpzdG9wQWxsb2NhdGluZwogICAgIAogICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7CiAg
ICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQ
ZXJCbG9jaz4+KCk7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFj
ZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAgIFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciBm
dW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsyOTcs
MTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9y
KCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtz
KCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFy
SGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAoKS0+
b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2Jq
ZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAgICAgc3dlZXAoKTsKIH0KIApAQCAtMzA3
LDcgKzMxMSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc3VtZUFsbG8KICAg
ICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSk7CiAgICAgQVNTRVJUKCFp
c0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpIHsKKyAgICBpZiAo
IWhhc0FueU5ld2x5QWxsb2NhdGVkKCkpIHsKICAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSBoYWQg
YWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3RvcHBlZCBhbGxvY2F0aW9uLgog
ICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CkBAIC0zNDYsMjQgKzM1MCw4MCBAQCB2
b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZlCiB7CiAgICAgQVNTRVJUKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpIHsKLSAg
ICAgICAgY2xlYXJNYXJrcyhtYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIC8vIFRoaXMgbWVhbnMg
d2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0IGluIHRoaXMgYmxvY2suCi0g
ICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05v
dEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgaWYgKCFhcmVNYXJrc1N0YWxlKG1hcmtpbmdW
ZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChoYW5kbGUoKS5hbGxvY2F0
b3IoKS0+aXNBbGxvY2F0ZWQoJmhhbmRsZSgpKQorICAgICAgICB8fCAhbWFya3NDb252ZXlMaXZl
bmVzc0R1cmluZ01hcmtpbmcobWFya2luZ1ZlcnNpb24pKSB7CisgICAgICAgIC8vIFdlIGFscmVh
ZHkga25vdyB0aGF0IHRoZSBibG9jayBpcyBmdWxsIGFuZCBpcyBhbHJlYWR5IHJlY29nbml6ZWQg
YXMgc3VjaCwgb3IgdGhhdCB0aGUKKyAgICAgICAgLy8gYmxvY2sgZGlkIG5vdCBzdXJ2aXZlIHRo
ZSBwcmV2aW91cyBHQy4gU28sIHdlIGNhbiBjbGVhciBtYXJrIGJpdHMgdGhlIG9sZCBmYXNoaW9u
ZWQKKyAgICAgICAgLy8gd2F5LiBOb3RlIHRoYXQgaXQncyBwb3NzaWJsZSBmb3Igc3VjaCBhIGJs
b2NrIHRvIGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0aCBhbiB1cC10by0KKyAgICAgICAgLy8gZGF0
ZSB2ZXJzaW9uISBJZiBpdCBkb2VzLCB0aGVuIHdlIHdhbnQgdG8gbGVhdmUgdGhlIG5ld2x5QWxs
b2NhdGVkIGFsb25lLCBzaW5jZSB0aGF0CisgICAgICAgIC8vIG1lYW5zIHRoYXQgd2UgaGFkIGFs
bG9jYXRlZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1wdHkgYmxvY2sgYnV0IGRpZCBub3QgZmlsbCBp
dCB1cCwgc28KKyAgICAgICAgLy8gd2UgY3JlYXRlZCBhIG5ld2x5QWxsb2NhdGVkLgorICAgICAg
ICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT25lIHdheSBv
ciBhbm90aGVyLCB3ZSdsbCB1cGRhdGUgbmV3bHlBbGxvY2F0ZWQuCisgICAgICAgIEhlYXBWZXJz
aW9uIGFsbG9jYXRlZFZlcnNpb24gPSB2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkuYWxsb2NhdGVk
VmVyc2lvbigpOworICAgICAgICBpZiAoV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4qIG5ld2x5
QWxsb2NhdGVkID0gaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZC5nZXQoKSkgeworICAgICAgICAg
ICAgc2l6ZV90IGNvdW50OworICAgICAgICAgICAgaWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVy
c2lvbiA9PSBhbGxvY2F0ZWRWZXJzaW9uKSB7CisgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhl
IGNvbnRlbnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1
bGwgc2V0IG9mIGJpdHMKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9j
YXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxs
b2NhdGVkLT5tZXJnZUNvdW50QW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIG5ld2x5QWxsb2Nh
dGVkIHdpdGggbWFya2VkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mCisgICAgICAgICAgICAg
ICAgLy8gYml0cyB0aGVuIGRlbGV0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4K
KyAgICAgICAgICAgICAgICBjb3VudCA9IG5ld2x5QWxsb2NhdGVkLT5zZXRDb3VudEFuZENsZWFy
KG1fbWFya3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb3VudCkKKyAgICAg
ICAgICAgICAgICBoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVs
bFZlcnNpb247CisgICAgICAgICAgICBlbHNlIGlmIChjb3VudCA9PSBoYW5kbGUoKS5jZWxsc1Bl
ckJsb2NrKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+c2V0SXNB
bGxvY2F0ZWQoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBoYW5kbGUoKS5tX2Fs
bG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIHNl
dCBiaXRzLiBJZiBpdCdzIHRoZSBmdWxsIHNldCwgdGhlbiBzZXQgYWxsb2NhdGVkIGFuZCBjbGVh
ciB0aGUKKyAgICAgICAgICAgIC8vIGJpdHMuIElmIG5vdCwgdGhlbiBhbGxvY2F0ZSBuZXdseUFs
bG9jYXRlZCBhbmQgc3BsYXQgbWFya2VkIGludG8gaXQgd2hpbGUgY2xlYXJpbmcKKyAgICAgICAg
ICAgIC8vIG1hcmtlZC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbV9tYXJrcy5jb3Vu
dCgpOworICAgICAgICAgICAgaWYgKGNvdW50KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50
ID09IGhhbmRsZSgpLmNlbGxzUGVyQmxvY2soKSkgeworICAgICAgICAgICAgICAgICAgICBtX21h
cmtzLmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigp
LT5zZXRJc0FsbG9jYXRlZCgmaGFuZGxlKCksIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAgICAgICAgICAg
ICAgICAgICBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkLT5zZXRBbmRDbGVhcihtX21hcmtzKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaGFu
ZGxlKCkubV9hbGxvY2F0ZWRWZXJzaW9uID0gYWxsb2NhdGVkVmVyc2lvbjsKICAgICB9CisgICAg
Y2xlYXJIYXNBbnlNYXJrZWQoKTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIG1f
bWFya2luZ1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5z
IHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBpbiB0aGlzIGJsb2NrLgor
ICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVt
cHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3Mo
KQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXNldEFsbG9jYXRlZCgpCiB7Ci0gICAgY2xl
YXJNYXJrcyh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSk7CisgICAg
bV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gTWFy
a2VkU3BhY2U6Om51bGxWZXJzaW9uOwogfQogCi12b2lkIE1hcmtlZEJsb2NrOjpjbGVhck1hcmtz
KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQordm9pZCBNYXJrZWRCbG9jazo6cmVzZXRNYXJr
cygpCiB7Ci0gICAgbV9tYXJrcy5jbGVhckFsbCgpOwotICAgIGNsZWFySGFzQW55TWFya2VkKCk7
Ci0gICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKLSAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFy
a2luZ1ZlcnNpb247CisgICAgLy8gV2Ugd2FudCBhYm91dFRvTWFya1Nsb3coKSB0byBzZWUgd2hh
dCB0aGUgbWFyayBiaXRzIHdlcmUgYWZ0ZXIgdGhlIGxhc3QgY29sbGVjdGlvbi4gSXQgdXNlcwor
ICAgIC8vIHRoZSB2ZXJzaW9uIG51bWJlciB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBtYXJr
cyBoYXZpbmcgYWxyZWFkeSBiZWVuIHN0YWxlIGJlZm9yZQorICAgIC8vIGJlZ2luTWFya2luZygp
LCBvciBqdXN0IHN0YWxlIG5vdyB0aGF0IGJlZ2luTWFya2luZygpIGJ1bXBlZCB0aGUgdmVyc2lv
bi4gSWYgd2UgaGF2ZSBhIHZlcnNpb24KKyAgICAvLyB3cmFwYXJvdW5kLCB0aGVuIHdlIHdpbGwg
Y2FsbCB0aGlzIG1ldGhvZCBiZWZvcmUgcmVzZXR0aW5nIHRoZSB2ZXJzaW9uIHRvIG51bGwuIFdo
ZW4gdGhlCisgICAgLy8gdmVyc2lvbiBpcyBudWxsLCBhYm91dFRvTWFya1Nsb3coKSB3aWxsIGFz
c3VtZSB0aGF0IHRoZSBtYXJrcyB3ZXJlIG5vdCBzdGFsZSBhcyBvZiBiZWZvcmUKKyAgICAvLyBi
ZWdpbk1hcmtpbmcoKS4gSGVuY2UgdGhlIG5lZWQgdG8gd2hpcCB0aGUgbWFya3MgaW50byBzaGFw
ZS4KKyAgICBpZiAoYXJlTWFya3NTdGFsZSgpKQorICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7
CisgICAgbV9tYXJraW5nVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTQyNSw2ICs0ODUsMTEgQEAgdm9pZCBNYXJrZWRCbG9j
azo6SGFuZGxlOjpyZW1vdmVGcm9tQWxsbwogICAgIG1fYWxsb2NhdG9yLT5yZW1vdmVCbG9jayh0
aGlzKTsKIH0KIAordm9pZCBNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbigpCit7Cisg
ICAgbV9uZWVkc0Rlc3RydWN0aW9uID0gaGFuZGxlKCkubmVlZHNEZXN0cnVjdGlvbigpOworfQor
CiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yLCBzaXplX3QgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPT0g
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkBAIC00NDIsMTAgKzUwNyw5IEBA
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxvY2EKICAgICBpZiAobV9hdHRy
aWJ1dGVzLmNlbGxLaW5kICE9IEhlYXBDZWxsOjpKU0NlbGwpCiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBEb2VzTm90TmVlZERlc3RydWN0aW9uKTsK
ICAgICAKLSAgICBibG9jaygpLm1fbmVlZHNEZXN0cnVjdGlvbiA9IG5lZWRzRGVzdHJ1Y3Rpb24o
KTsKKyAgICBibG9jaygpLnNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAKLSAgICB1bnNpZ25l
ZCBjZWxsc1BlckJsb2NrID0gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplOwot
ICAgIGRvdWJsZSBtYXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxp
emF0aW9uKCkgKiBjZWxsc1BlckJsb2NrKTsKKyAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0o
T3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jaygpKTsK
ICAgICAKICAgICAvLyBUaGUgbWFyayBjb3VudCBiaWFzIHNob3VsZCBiZSBjb21mb3J0YWJseSB3
aXRoaW4gdGhpcyByYW5nZS4KICAgICBSRUxFQVNFX0FTU0VSVChtYXJrQ291bnRCaWFzID4gc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4oKSkpOwpA
QCAtNDY2LDEyICs1MzAsMjIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVG
cm9tQQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCog
Y2VsbCkKIHsKLSAgICByZXR1cm4gaXNMaXZlKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJr
aW5nVmVyc2lvbigpLCBjZWxsKTsKKyAgICByZXR1cm4gaXNMaXZlKHNwYWNlKCktPm1hcmtpbmdW
ZXJzaW9uKCksIHNwYWNlKCktPmlzTWFya2luZygpLCBjZWxsKTsKIH0KIAogYm9vbCBNYXJrZWRC
bG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgcmV0dXJuIGlz
TGl2ZUNlbGwodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIHApOwor
ICAgIHJldHVybiBpc0xpdmVDZWxsKHNwYWNlKCktPm1hcmtpbmdWZXJzaW9uKCksIHNwYWNlKCkt
PmlzTWFya2luZygpLCBwKTsKK30KKwordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhh
c0FueU5ld2x5QWxsb2NhdGVkKCkKK3sKKyAgICBpZiAoIW1fbmV3bHlBbGxvY2F0ZWQpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51bGxwdHI7CisgICAgbV9hbGxvY2F0ZWRW
ZXJzaW9uID0gc3BhY2UoKS0+YWxsb2NhdGVkVmVyc2lvbigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CitjbGFzcyBNYXJr
ZWRTcGFjZTsKIAogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVh
cFZlcnNpb247CkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgogCiAgICAgICAgIE1hcmtlZEFs
bG9jYXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsK
KyAgICAgICAgaW5saW5lIE1hcmtlZFNwYWNlKiBzcGFjZSgpIGNvbnN0OwogICAgICAgICBWTSog
dm0oKSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCkBA
IC0xNDEsMTEgKzE0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhj
b25zdCBGcmVlTGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8v
IENhbGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xs
ZWN0aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAg
ICAgIC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4K
LSAgICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAg
ICAgc2l6ZV90IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJs
b2NrKCk7CisgICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNv
bnN0OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE1Myw5ICsx
NTMsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgp
OwogICAgICAgICBzaXplX3Qgc2l6ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgIGlubGluZSBi
b29sIGlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsK
LSAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
biwgY29uc3Qgdm9pZCopOworICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhl
YXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3QgSGVhcENlbGwq
KTsKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVy
c2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IHZvaWQqKTsKIAogICAgICAgICBib29sIGlzTGl2
ZShjb25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCop
OwpAQCAtMTY0LDggKzE2NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxv
Y2F0ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY29u
c3Qgdm9pZCopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQorICAgICAgICBIZWFwVmVyc2lv
biBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uOyB9
CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc05ld2x5QWxsb2NhdGVkU3RhbGUoKSBj
b25zdDsKICAgICAgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBoYXNBbnlOZXdseUFsbG9j
YXRlZCgpOworICAgICAgICB2b2lkIHN3ZWVwSGFzQW55TmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAg
ICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOworICAgICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9y
Jik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2Vs
bChjb25zdCBGdW5jdG9yJik7CkBAIC0xODUsNyArMTkxLDcgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUoSGVhcCYsIHZvaWQqKTsKLSAgICAgICAgICAg
IAorICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBG
cmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9u
bHkpOwogICAgICAgICAgICAgCkBAIC0yMzEsNiArMjM3LDggQEAgcHVibGljOgogICAgICAgICBN
YXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3Qg
bV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAg
V2Vha1NldCBtX3dlYWtTZXQ7CisgICAgICAgIAorICAgICAgICBIZWFwVmVyc2lvbiBtX2FsbG9j
YXRlZFZlcnNpb247CiAgICAgICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sg
eyBudWxscHRyIH07CiAgICAgfTsKQEAgLTI0MCw2ICsyNDgsOCBAQCBwdWJsaWM6CiAgICAgSGFu
ZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCiAgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5l
IEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29u
c3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgTWFya2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODgs
MTAgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCBy
ZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgLy8gVGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFu
ZCB3ZSB1c2UgaXQgYXMgYSBuby1vcCB0aGF0IHRvdWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91
dCgpLgorICAgIHZvaWQgc2V0TmVlZHNEZXN0cnVjdGlvbigpOworICAgIAorICAgIHZvaWQgcmVz
ZXRNYXJrcygpOwogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21B
bGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpAQCAtMjg5LDEzICszMDIsMTMgQEAgcHJpdmF0
ZToKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xv
dyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0g
ICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lk
IGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOwor
ICAgIAorICAgIGlubGluZSBib29sIG1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhl
YXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RG
OjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4gbV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3Ry
dWN0aW9uOwogICAgIExvY2sgbV9sb2NrOwpAQCAtNTM0LDE1ICs1NDcsNiBAQCBpbmxpbmUgdm9p
ZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5lCiAgICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xl
YXIobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2Nh
dGVkKSB7Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCiB7CiAgICAgQVNTRVJUKE1hcmtlZEJsb2Nr
Ojppc0F0b21BbGlnbmVkKHApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTAgKzI3LDM0IEBACiAKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNp
b24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIHVuc2lnbmVk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2soKQoreworICAgIHJldHVybiBNYXJr
ZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemUoKTsKK30KKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uKQoreworICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGVz
ZSBpcyB0cnVlOgorICAgIC8vIC0gV2UganVzdCBjcmVhdGVkIHRoZSBibG9jayBhbmQgc28gdGhl
IGJpdHMgYXJlIGNsZWFyIGFscmVhZHkuCisgICAgLy8gLSBUaGlzIGJsb2NrIGhhcyBvYmplY3Rz
IG1hcmtlZCBkdXJpbmcgdGhlIGxhc3QgR0MsIGFuZCBzbyBpdHMgdmVyc2lvbiB3YXMgdXAtdG8t
ZGF0ZSBqdXN0CisgICAgLy8gICBiZWZvcmUgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBkaWQgYmVn
aW5NYXJraW5nKCkuIFRoaXMgbWVhbnMgdGhhdCBhbnkgb2JqZWN0cyB0aGF0IGhhdmUgCisgICAg
Ly8gICB0aGVpciBtYXJrIGJpdCBzZXQgYXJlIHZhbGlkIG9iamVjdHMgdGhhdCB3ZXJlIG5ldmVy
IGRlbGV0ZWQsIGFuZCBzbyBhcmUgY2FuZGlkYXRlcyBmb3IKKyAgICAvLyAgIG1hcmtpbmcgaW4g
YW55IGNvbnNlcnZhdGl2ZSBzY2FuLiBVc2luZyBvdXIgamFyZ29uLCB0aGV5IGFyZSAibGl2ZSIu
CisgICAgLy8gLSBXZSBkaWQgfjJeMzIgY29sbGVjdGlvbnMgYW5kIHJvdGF0ZWQgdGhlIHZlcnNp
b24gYmFjayB0byBudWxsLCBzbyB3ZSBuZWVkZWQgdG8gaGFyZC1yZXNldAorICAgIC8vICAgZXZl
cnl0aGluZy4gSWYgdGhlIG1hcmtzIGhhZCBiZWVuIHN0YWxlLCB3ZSB3b3VsZCBoYXZlIGNsZWFy
ZWQgdGhlbS4gU28sIHdlIGNhbiBiZSBzdXJlIHRoYXQKKyAgICAvLyAgIGFueSBzZXQgbWFyayBi
aXQgcmVmbGVjdHMgb2JqZWN0cyBtYXJrZWQgZHVyaW5nIGxhc3QgR0MsIGkuZS4gImxpdmUiIG9i
amVjdHMuCisgICAgLy8gSXQgd291bGQgYmUgYWJzdXJkIHRvIHVzZSB0aGlzIG1ldGhvZCB3aGVu
IG5vdCBjb2xsZWN0aW5nLCBzaW5jZSB0aGlzIHNwZWNpYWwgIm9uZSB2ZXJzaW9uCisgICAgLy8g
YmFjayIgc3RhdGUgb25seSBtYWtlcyBzZW5zZSB3aGVuIHdlJ3JlIGluIGEgY29uY3VycmVudCBj
b2xsZWN0aW9uIGFuZCBoYXZlIHRvIGJlCisgICAgLy8gY29uc2VydmF0aXZlLgorICAgIHJldHVy
biBtX21hcmtpbmdWZXJzaW9uID09IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgorICAgICAgICB8
fCBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1Zl
cnNpb247Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFw
VmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBj
ZWxsKQogewogICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwogICAgIApAQCAtMzksMjIgKzYz
LDM2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0
aGlzLT5ibG9jaygpOwotICAgIAogICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhp
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGlmIChibG9jay5hcmVNYXJrc1N0
YWxlKG1hcmtpbmdWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE1hcmtlZEJs
b2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CisgICAgCisgICAgaWYgKGJsb2NrLmFyZU1hcmtz
U3RhbGUoKSkgeworICAgICAgICBpZiAoIWlzTWFya2luZykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgaWYgKCFibG9jay5tYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2lu
ZyhtYXJraW5nVmVyc2lvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0g
ICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5tX21hcmtz
LmdldChibG9jay5hdG9tTnVtYmVyKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qg
dm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCB2b2lkKiBwKQog
ewogICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENl
bGwqPihwKSk7CisgICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBz
dGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9hbGxvY2F0ZWRWZXJzaW9uICE9IHNwYWNlKCktPmFsbG9jYXRlZFZlcnNpb24oKTsKK30K
KworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQo
KQoreworICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkICYmICFpc05ld2x5QWxsb2NhdGVkU3Rh
bGUoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+CkBAIC04Nyw5ICsxMjUsMTkg
QEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJ
dGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6
cmVzZXRNYXJraW5nVmVyc2lvbigpCitpbmxpbmUgSGVhcCogTWFya2VkQmxvY2s6OmhlYXAoKSBj
b25zdAoreworICAgIHJldHVybiAmdm0oKS0+aGVhcDsKK30KKworaW5saW5lIE1hcmtlZFNwYWNl
KiBNYXJrZWRCbG9jazo6c3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiAmaGVhcCgpLT5vYmpl
Y3RTcGFjZSgpOworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OnNwYWNlKCkgY29uc3QKIHsKLSAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51
bGxWZXJzaW9uOworICAgIHJldHVybiAmaGVhcCgpLT5vYmplY3RTcGFjZSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDI5ICs0NTEsNiBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogICAgICAgICB9KTsKIH0KIAotdm9pZCBNYXJrZWRTcGFj
ZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCgpCi17Ci0gICAgZm9yRWFjaEFsbG9jYXRvcigKLSAgICAg
ICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsK
LSAgICAgICAgICAgIGlmIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGFsbG9jYXRvci50
YWtlTGFzdEFjdGl2ZUJsb2NrKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPmNsZWFyTmV3bHlB
bGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwotICAgICAgICB9KTsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2Nh
dGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXpl
KCk7ICsraSkKLSAgICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2Nh
dGVkKCk7Ci0KLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICBmb3JFYWNoQmxv
Y2soCi0gICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChibG9jaywgIWJsb2NrLT5jbGVhck5ld2x5QWxsb2Nh
dGVkKCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKExhcmdlQWxs
b2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKLSAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7
Ci0gICAgfQotfQotCiB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewogICAgIGlm
IChtX2hlYXAtPm9wZXJhdGlvbkluUHJvZ3Jlc3MoKSA9PSBGdWxsQ29sbGVjdGlvbikgewpAQCAt
NDgzLDE2ICs0NjAsMTUgQEAgdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgICAg
IH0pOwogCi0gICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX21hcmtpbmdW
ZXJzaW9uKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChVTkxJS0VMWShtX21hcmtpbmdWZXJzaW9u
ID09IGluaXRpYWxWZXJzaW9uKSkgewotICAgICAgICAgICAgLy8gT2ggbm8hIFZlcnNpb24gd3Jh
cC1hcm91bmQhIFdlIGhhbmRsZSB0aGlzIGJ5IHNldHRpbmcgYWxsIGJsb2NrIHZlcnNpb25zIHRv
IG51bGwuCisgICAgICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX21hcmtpbmdWZXJzaW9u
KSA9PSBpbml0aWFsVmVyc2lvbikpIHsKICAgICAgICAgICAgIGZvckVhY2hCbG9jaygKICAgICAg
ICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewotICAgICAgICAg
ICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGUtPmJsb2NrKCkucmVzZXRNYXJrcygpOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0g
bmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbik7CisgICAgICAgIAogICAgICAgICBmb3IgKExh
cmdlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKICAgICAgICAg
ICAgIGFsbG9jYXRpb24tPmZsaXAoKTsKICAgICB9CkBAIC01MTEsNiArNDg3LDIzIEBAIHZvaWQg
TWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmVuZE1hcmtp
bmcoKQogeworICAgIGlmIChVTkxJS0VMWShuZXh0VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24p
ID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICBmb3JFYWNoQmxvY2soCisgICAgICAgICAg
ICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgeworICAgICAgICAgICAgICAgIGhh
bmRsZS0+cmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAgICAg
CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gbmV4dFZlcnNpb24obV9hbGxvY2F0ZWRWZXJzaW9u
KTsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2xhcmdlQWxsb2NhdGlvbnNPZmZzZXRG
b3JUaGlzQ29sbGVjdGlvbjsgaSA8IG1fbGFyZ2VBbGxvY2F0aW9ucy5zaXplKCk7ICsraSkKKyAg
ICAgICAgbV9sYXJnZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CisKKyAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBmb3IgKExhcmdlQWxsb2NhdGlvbiog
YWxsb2NhdGlvbiA6IG1fbGFyZ2VBbGxvY2F0aW9ucykKKyAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CisgICAgfQor
CiAgICAgZm9yRWFjaEFsbG9jYXRvcigKICAgICAgICAgWyZdIChNYXJrZWRBbGxvY2F0b3ImIGFs
bG9jYXRvcikgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgIGFsbG9jYXRvci5lbmRN
YXJraW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJ
KHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEzICs2NSwxMyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBudW1TaXplQ2xhc3NlcyA9IGxhcmdlQ3V0b2ZmIC8gc2l6ZVN0ZXA7
CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIG51bGxWZXJzaW9uID0gMDsgLy8g
VGhlIHZlcnNpb24gb2YgZnJlc2hseSBhbGxvY2F0ZWQgYmxvY2tzLgotICAgIHN0YXRpYyBjb25z
dCBIZWFwVmVyc2lvbiBpbml0aWFsVmVyc2lvbiA9IDE7IC8vIFRoZSB2ZXJzaW9uIHRoYXQgdGhl
IGhlYXAgc3RhcnRzIG91dCB3aXRoLgorICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBpbml0
aWFsVmVyc2lvbiA9IDI7IC8vIFRoZSB2ZXJzaW9uIHRoYXQgdGhlIGhlYXAgc3RhcnRzIG91dCB3
aXRoLiBTZXQgdG8gbWFrZSBzdXJlIHRoYXQgbmV4dFZlcnNpb24obnVsbFZlcnNpb24pICE9IGlu
aXRpYWxWZXJzaW9uLgogICAgIAotICAgIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uKEhlYXBWZXJz
aW9uIHZlcnNpb24pCisgICAgc3RhdGljIEhlYXBWZXJzaW9uIG5leHRWZXJzaW9uKEhlYXBWZXJz
aW9uIHZlcnNpb24pCiAgICAgewogICAgICAgICB2ZXJzaW9uKys7CiAgICAgICAgIGlmICh2ZXJz
aW9uID09IG51bGxWZXJzaW9uKQotICAgICAgICAgICAgdmVyc2lvbisrOworICAgICAgICAgICAg
dmVyc2lvbiA9IGluaXRpYWxWZXJzaW9uOwogICAgICAgICByZXR1cm4gdmVyc2lvbjsKICAgICB9
CiAgICAgCkBAIC0xNzEsNiArMTcxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNQYWdlZE91dChk
b3VibGUgZGVhZGxpbmUpOwogICAgIAogICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJraW5nVmVyc2lvbjsgfQorICAgIEhlYXBWZXJzaW9uIGFsbG9j
YXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRlZFZlcnNpb247IH0KIAogICAg
IGNvbnN0IFZlY3RvcjxMYXJnZUFsbG9jYXRpb24qPiYgbGFyZ2VBbGxvY2F0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uczsgfQogICAgIHVuc2lnbmVkIGxhcmdlQWxsb2Nh
dGlvbnNOdXJzZXJ5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldDsgfQpAQCAtMjE3LDYgKzIxOCw3IEBAIHByaXZhdGU6CiAKICAgICBIZWFwKiBt
X2hlYXA7CiAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9u
IH07CisgICAgSGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24g
fTsKICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICBib29sIG1faXNJdGVyYXRpbmc7CiAgICAg
Ym9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw4ICsx
OTEsNiBAQCB2b2lkIFNsb3RWaXNpdG9yOjpzZXRNYXJrZWRBbmRBcHBlbmRUb01hCiAgICAgdmFs
aWRhdGUoY2VsbCk7CiAjZW5kaWYKICAgICAKLSAgICAvL2RhdGFMb2coIiAgICBNYXJraW5nICIs
IFJhd1BvaW50ZXIoY2VsbCksICJcbiIpOwotICAgIAogICAgIGlmIChjZWxsLT5pc0xhcmdlQWxs
b2NhdGlvbigpKQogICAgICAgICBzZXRNYXJrZWRBbmRBcHBlbmRUb01hcmtTdGFjayhjZWxsLT5s
YXJnZUFsbG9jYXRpb24oKSwgY2VsbCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHJldmlzaW9uIDIw
Njc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIK
ICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNs
dWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2
LTEwLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFya2Vk
QmxvY2sgc2hvdWxkIGtub3cgd2hhdCBvYmplY3RzIGFyZSBsaXZlIGR1cmluZyBtYXJraW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzMDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgZG9lcyB0d28gdGhpbmdzLiBGaXJzdCwgSSBub3RpY2VkIHRoYXQgdGhlIGF0b21pYyBtb2Rl
IHdhcyB1c2VsZXNzLiBJdCBvbmx5IGFmZmVjdHMgdGhlCisgICAgICAgIGNvbmN1cnJlbnRUZXN0
QW5kU2V0fENsZWFyIG1ldGhvZHMsIGFuZCB0aGUgb25seSBjYWxsZXIgb2YgdGhvc2UgbWV0aG9k
cyBlbmFibGVkIGF0b21pY2l0eS4KKyAgICAgICAgU2Vjb25kLCB0aGlzIGFkZHMgbmV3IHByaW1p
dGl2ZXMgdGhhdCBkbyBhIGJ1bmNoIG9mIHRoaW5ncyBhdCBvbmNlOgorICAgICAgICAKKyAgICAg
ICAgLSBtZXJnZUNvdW50QW5kQ2xlYXI6IG1lcmdlcyBpbiB0aGUgY29udGVudHMgb2YgYW5vdGhl
ciBiaXRtYXAsIHdoaWxlIGNsZWFyaW5nIHRoYXQgYml0bWFwLAorICAgICAgICAgIGFuZCBjb3Vu
dGluZyB0aGUgdGhlIG51bWJlciBvZiBzZXQgYml0cyBhcyBhIHJlc3VsdC4KKyAgICAgICAgCisg
ICAgICAgIC0gc2V0Q291bnRBbmRDbGVhcjogc2V0cyB0aGlzIGJpdG1hcCB0byBoYXZlIHRoZSBj
b250ZW50cyBvZiBhbm90aGVyIGJpdG1hcCwgd2hpbGUgY2xlYXJpbmcKKyAgICAgICAgICB0aGF0
IGJpdG1hcCwgYW5kIGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMuCisgICAgICAgIAor
ICAgICAgICAtIHNldEFuZENsZWFyOiBzZXRzIHRoaXMgYml0bWFwIHRvIGhhdmUgdGhlIGNvbnRl
bnRzIG9mIGFub3RoZXIgYml0bWFwIHdoaWxlIGNsZWFyaW5nIHRoYXQKKyAgICAgICAgICBiaXRt
YXAuCisgICAgICAgIAorICAgICAgICBJdCdzIGltcG9ydGFudCBmb3IgdGhlc2UgdG8gYmUgZmFz
dCwgc2luY2UgdGhlIEdDIHVzZXMgdGhlbSBkdXJpbmcgbWFya2luZy4KKyAgICAgICAgCisgICAg
ICAgICogd3RmL0JpdG1hcC5oOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OkJpdG1hcCk6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6Z2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpz
ZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnRlc3RBbmRTZXQpOgorICAgICAgICAoV1RG
OjpXb3JkVHlwZT46OnRlc3RBbmRDbGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y29u
Y3VycmVudFRlc3RBbmRTZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvbmN1cnJlbnRU
ZXN0QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNsZWFyKToKKyAgICAgICAg
KFdURjo6V29yZFR5cGU+OjpjbGVhckFsbCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6bmV4
dFBvc3NpYmx5VW5zZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9z
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb3VudCk6CisgICAgICAgIChXVEY6OldvcmRU
eXBlPjo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6aXNGdWxsKToKKyAgICAg
ICAgKFdURjo6V29yZFR5cGU+OjptZXJnZSk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Zmls
dGVyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpleGNsdWRlKToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojpmb3JFYWNoU2V0Qml0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjptZXJn
ZUNvdW50QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnNldENvdW50QW5kQ2xl
YXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnNldEFuZENsZWFyKToKKyAgICAgICAgKFdU
Rjo6PSk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6aGFzaCk6CisKIDIwMTYtMTAtMDMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
S2V5Ym9hcmRFdmVudC5rZXkgYXR0cmlidXRlCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkocmV2aXNpb24gMjA2NzU1
KQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsy
Nyw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIEJpdG1hcEF0b21pY01vZGUgewotICAg
IC8vIFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgYmVoYXZlIGp1c3QgbGlrZSB0ZXN0
QW5kU2V0LgotICAgIEJpdG1hcE5vdEF0b21pYywKLQotICAgIC8vIFRoaXMgbWFrZXMgY29uY3Vy
cmVudFRlc3RBbmRTZXQgdXNlIGNvbXBhcmVBbmRTd2FwLCBzbyB0aGF0IGl0J3MKLSAgICAvLyBh
dG9taWMgZXZlbiB3aGVuIHVzZWQgY29uY3VycmVudGx5LgotICAgIEJpdG1hcEF0b21pYwotfTsK
LQotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQzMl90PgogY2xh
c3MgQml0bWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKQEAgLTU5LDgg
KzUwLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNv
bnN0OwogICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAg
aW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBjb3VudChz
aXplX3QgPSAwKSBjb25zdDsKKyAgICBpbnQ2NF90IGZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0OworICAgIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQgPSAwKSBjb25zdDsK
ICAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgIHNpemVfdCBpc0Z1bGwoKSBjb25zdDsK
ICAgICAKQEAgLTcxLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jPgogICAgIHZvaWQgZm9yRWFjaFNldEJpdChjb25zdCBGdW5jJikgY29uc3Q7CiAgICAgCisg
ICAgc2l6ZV90IG1lcmdlQ291bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICBzaXplX3Qgc2V0Q291
bnRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAg
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgCkBAIC05MCwyNiArODUsMjYgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0czsKIH07CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OkJpdG1hcCgpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CitpbmxpbmUgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Qml0bWFwKCkK
IHsKICAgICBjbGVhckFsbCgpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0
bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmdldChzaXplX3Qgbikg
Y29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29u
c3QKIHsKICAgICByZXR1cm4gISEoYml0c1tuIC8gd29yZFNpemVdICYgKG9uZSA8PCAobiAlIHdv
cmRTaXplKSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWlj
TW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxi
aXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3
b3JkU2l6ZV0gfD0gKG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRU
eXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBl
Pjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6c2V0KHNpemVfdCBuLCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgc2V0KG4pOwpAQCAtMTE3LDggKzExMiw4IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2QKICAgICAgICAgY2xlYXIobik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6
dGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRl
c3RBbmRTZXQoc2l6ZV90IG4pCiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdv
cmRTaXplKTsKICAgICBzaXplX3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xMjcsOCArMTIy
LDggQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJv
b2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQog
ewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90
IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTM3LDE0ICsxMzIsOSBAQCBpbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlw
ZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQogewot
ICAgIGlmIChhdG9taWNNb2RlID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAgICAgcmV0dXJuIHRl
c3RBbmRTZXQobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwot
ICAgIAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6
ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5k
YXRhKCkgKyBpbmRleDsKQEAgLTE1NywxNCArMTQ3LDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5
cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKLSAgICBp
ZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0QW5k
Q2xlYXIobik7Ci0KLSAgICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAg
IAogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90
IGluZGV4ID0gbiAvIHdvcmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRh
KCkgKyBpbmRleDsKQEAgLTE3NywyOCArMTYyLDI4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjpjbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFy
KHNpemVfdCBuKQogewogICAgIGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdv
cmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQogewogICAgIG1lbXNldChiaXRzLmRhdGEo
KSwgMCwgc2l6ZW9mKGJpdHMpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6
ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om5leHRQb3NzaWJs
eVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6bmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICgh
fmJpdHNbc3RhcnQgLyB3b3JkU2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNp
emUpICsgMSkgKiB3b3JkU2l6ZTsKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OmZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0Cit0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgaW50NjRf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVu
TGVuZ3RoKSBjb25zdAogewogICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAgICAgcnVuTGVuZ3Ro
ID0gMTsgCkBAIC0yMTcsOCArMjAyLDggQEAgaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNp
emUsIGF0b21pYwogICAgIHJldHVybiAtMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNp
emUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxp
bmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNvdW50
KHNpemVfdCBzdGFydCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6
Y291bnQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAg
IGZvciAoIDsgKHN0YXJ0ICUgd29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0yMzAsOCArMjE1LDgg
QEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2Rl
IGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBpZiAoYml0c1tpXSkKQEAgLTIz
OSw4ICsyMjQsOCBAQCBpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBB
dG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAor
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNp
emVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAogewogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKH5iaXRzW2ld
KQpAQCAtMjQ4LDMwICsyMzMsMzAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om1lcmdlKGNv
bnN0IEJpdG1hcCYgb3RoZXIpCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJn
ZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29y
ZHM7ICsraSkKICAgICAgICAgYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6ZmlsdGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJp
dHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2Rl
IGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVy
KQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAm
IG90aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAg
ICAgYml0c1tpXSAmPSB+b3RoZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAoraW5saW5l
IHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBG
dW5jJiBmdW5jKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsr
aSkgewogICAgICAgICBXb3JkVHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTI4Niw4ICsyNzEsMzkg
QEAgaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIH0KIH0KIAot
dGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWlj
TW9kZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Cit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6
ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om1lcmdlQ291bnRBbmRDbGVhcihCaXRt
YXAmIG90aGVyKQoreworICAgIHNpemVfdCByZXN1bHQgPSAwOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICByZXN1bHQgKz0gV1RGOjpiaXRDb3VudChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYml0c1tpXSB8PSBvdGhlci5iaXRzW2ldKSk7CisgICAgICAg
IG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldENvdW50QW5kQ2xlYXIoQml0bWFwJiBv
dGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gPSBvdGhlci5iaXRzW2ldKSk7CisgICAgICAgIG90aGVy
LmJpdHNbaV0gPSAwOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQoreworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICBiaXRzW2ldID0g
b3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7CisgICAgfQorfQorCit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7
CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC0yOTYsMTQgKzMxMiwx
NCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2Rl
IGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAmIG90
aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShj
b25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRv
bWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdW5zaWduZWQgQml0bWFw
PGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCg==
</data>
<flag name="commit-queue"
          id="313824"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>290658</attachid>
            <date>2016-10-04 15:51:38 -0700</date>
            <delta_ts>2016-10-06 17:31:57 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews117 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>419276</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
Hc3RE04262nte0dRRGRkyeok7OjxjbjE5t43E0XELMBSGv66GF8/aVvdQcb01YQrez3har4u6RZA
uiEdOpAe2Fxyon+Uk3lHujvS3ZHujnR3pLsj3R3pfjXSLayEoPGm3pX9tmq3F7AElcMwy71JKmfl
352pr94f3cr8EY1C2LjPSOy9b9xYCeLoaTR35fuKB7jAZUraaO3NzYUlGeFPu0nS5DT6IhV1de6j
dKIa+wti/o6AEHuDpONk+0bycyKibNTv1BwlJI7+kvB+WO25V7f7Q0WGzH3/oFClSXxH0vwliNs1
0F/i6nuiCf99oon8VaKJ/oWiib2aaDJfTzRZryua1N+gd6qpU02daupUU6eaOtXUqaZONXWqqVNN
nWrqVFOnmp5UTbhTTZ1q6lRTp5o61dSppk41daqpU02daupUU6eaOtX0jGoinWrqVFOnmjrV1Kmm
TjV1qqlTTZ1q6lRTp5o61dSppmdUE+1UU6eaOtXUqaZONXWqqVNNnWrqVFOnmjrV1KmmTjU9o5pY
p5o61dSppk41daqpU02daupUU6eaOtXUqaZONXWq6WnVhPR49SDOr1Cl1cNOV3pJV4+AkHrPYsYo
XRwMNF3Po2+DludiwsCoPoAJM8dsxOBA5vFTVySbAQXUJsiUeMyVkyStX7J+wUCxGaCk+lD9Vt7n
dVsmFjbDpLyidUA9pTPn2yM0lkoh5qKBi0JnpaUTjJ6AhfHOAGGWigSTmi0cxxgl46S8hG4PWNao
HGC7V0iuBsydKzBVkcBmr6d+88ROPR9PtnBhRJA6hzlpWxOwpZ1ktyn0AN27uBmsHjmrBXme5eUj
U1dPTN1camnX6v/qf7acjtbP3MVM0zQ3nUX5g348jW5lMdB2n4SqG2BkvPXS32w9D7j3/v37A/3I
tCl1fcYM4hFk0NALDcd2iBFi30G26QlOzXfffzrw2vc3qGTMstXSGfrWh7De+hs4SL/Ikaof17JY
XN2l09Xp6iFAEyJPhCH1DEos16AOsw3umJ7h2Z7ju67JMOZtaJ6y2sRlo11cJpdldrYsLOfq4b11
aMRziU8DZrgWpwZlXmC4NKCGGTIKkC2PMPECaHXDDXQ2Hu2gG0s8UuiersE9C9E3cBH86uM+fwNA
KfJsDFkzoBQTAIp9w0WCGFwEBNkk8ALTbwPatNwf59FUqkcgHK6eYFwcOltzavgxTvhOdjGJx3g8
bvQQyMXP6aINN3e4w6jABrJh2SkSpiFoGBiB41s4RMiBH224K4vteKuxOk4mYnMHJ0cMqd3ZxPlU
gh2GsEm4YwhhmQalISQYw3a1CEdQ6RyXeu4TQJ/O7GqwDjWxx9YO1GQ0Fq0pPZG3UfzQhtcKhR34
DA42vAzYqT7sBY4M1/FDFhIncBh+OrGV3efSW82oISeCxGwbufqQb23maJmkWd9R7z/6zkfn5GKy
vD2e6T1ikz7mfQoW1m8hEJ8hL0QcG8L04Ai6iBsuHD4oEZy5pi2wMFXir8rmfXiSjnIolIfBt4Wc
rRCvPPW/yG+LQxBxMLIoDiuvj8MbIP3RUj1C+XHmaRSfX+3Oa8Q+4vFu7KMoLjcYnPoLP7w8vug7
6+Jic4iub0J8ge+7KOCh4ROgBbBQniFISA1GTStwPc48ZO7GF65XpjhUO+gDNI27NC7aV+xy9VSS
4nAHiVaBVX3ZgmNYq+GbD1kiCCygekCk3qMm7ZM+A9w24gHlZmCYyLOgdDvUgLbhGYwEwnaDgFFm
Ae5lkSuvh+rymjNO7JG57Ux9KMrdAleosD6dVmJ3kzXRx6oqIxyElh+CaxtS5rm24VALG1RwLxQm
dDKLPZuy87mcfThpT1Y1Pa2StQuiGUMsWmKA09osK2XX9qI5CESoLaKvroCfKomha5m+zwzTcqGq
mB4zuEU8A0LwA18I7OPw+cWP8lE2a4+kNq2OoH1yfUYzxiTejZFjtl6nFWueVY/OWa8UcMI+QeUB
tjAyPUyZYdkEWpOHHMNRjdQMMLFwQALsebWNUtk7fMKy1kTRsoUivt09Cxkv83QBZdIuUw+aguI+
Q32uyIdLKA9DVSepIh8uNTgKuUF8h/vE8R1sOs+uwNXKenta16NaE2Lchjvewq0qTlo9R3v1bKUC
EsvhOqaQm24I1Q+5hkcJh8IIoF0HCj60egKFEVKM8LPIW+y3B9EycSuepCWeiK6L32oho2J9b6hH
LFvlHpvU8UzXQCaDnQH1zuDcg9wjBw6BYyMWkOd2xsZgE03E2tCM1xsWDv4KBcbQLS3FnrgLdE44
cAwt4MMI+qTwXW5gzwmgNnu+TcXrFJS18yZi2Ya4YvBb+0F+unA2fiGCPuubcGH5GwJxCbYxA25C
QxJAM/G54itApzwbuDhwAiAuu4Fc5Ok96NKtraFcPb0f1GgjiBFCu0GMCNoK4jhu7Ga7j9V+tsu6
HnDqhwEcQ1DYUM1tahnCcl2DWL5n+qC1UIhfgr7u44lqFz+xlUcxbokiZlsV/TSa3ebZvVQroGYr
9BbIF1CpvmF6XC2AKQzBLG44noPhKLqejbyXoF/bbke+Hm2gTlBLQUlUPakO4P1pWsTrXW9iteUJ
kGLoMtzgvgd1L4Dd7voOcA/qwSbhxEXO83XPiWM5Ud9Mye92n3sZg4H2aU10zaiSlh2VjEfrgxy/
eRON0s1hJuoAcO4Q4iCgh7ZiJQgRww1d6DgeCoGpc5e7olZStqw03Y9bkiqJtU7q1jOne4yRvonK
jexAX4MmA32cM0W+BSTXxNSwoddj4oC28dtbXtOm1vRst8AR5pYu+CjTaRJNAE65MUlJM7iPLcsG
le8zEwhTgIAwmRzKAjZNgV3TEWbwkq25Mt6+kqvBJuikpTNIyTdLmE2n2czLH+aLbJ1HkD8W7tMq
k4HNhc3gPEF1Bn3oQaN2KbYNgfyQMu7iQJitmdy13AQmW5jb2Eq2qtWFzMdZPo1msXRm0eShSIv6
kQe5Glgu9gy//B4FjhKILIoNbCGGXcS48OyX5LXFTXuOWyZqzQhkS1j13nez0/yY61mgo3zDsXwI
wsECujCCzUFECDIRNm9gv1bzu2lZivGo5ZiPR2SLYBbRLBll39bwqckVwVRnHkotSA6QhFBhgUZg
VcVs1wNWEQLxFKYFsuQ5GtGwvAWNtkCLo3UJOElnMsqdya2EKB8TS3i1cz3PBe3tCCGAnlmmwQNP
GMjyXQzbxvao/TcV2BaYzTCltRMmxRIxq1qBbPS/8aN0tZjibrYpVPXwDddT3M1nwN0sAa07NG2f
2Ta2ba9ZaOtWtKYn3OYeCu2odH9XFRYjKmZ4s/yCKwavDqHtEzegfmBYKIQS4QDdcQSwH99BQSh8
yrAdNJHsGtzCY7fgGdvrVR8V0z7aAFFa2KEO+T/irmW7kRvJ7vUVs+wN1Hg/lnh6ao49VWPZnt6m
yFRZxyqpWg+P3V/fEUgxSWSCFNvW6VmJYqaQEYlAxL0RASgrHQnHaRYmGsxRwNSz4rjOzNMQWhEO
xmiffWN7z17mUPa2ge6I4R8cfIXfVHgdnIZQREyWEOJZgCUuAG0Hb3Jhhelc5J+ywP31hQ5r3yrE
dty9v9vNywZTYrNFKaBjCiWO3hsPvIVIillMDyHTakBUwGd0kIEaXlL7HhdjXbSPvFnLIblbvMv/
/LDHo+ySc2SIHImrc0D/BFdECSAlQkPA9KpAPC+OiZg4l29Qw7MJ1mGI/XD61v31i1atoaOrUQvc
Gu8eXrbpYTNHMcFfjcVbzhl3lHju0YQ1mHDgmsSoYEqYTTKdhV7nJ/TFny830qsOZRNa0JuxCQEz
hGVUSlz+OEscXKlITpMsBGAb8AYEpt6TrIywIgQvjDnl/TvIEx7d8UgaQ5JZ/gfiH59v7+rbRB7D
2OSSBCDNGKIiLBUgMpYzYr3PRIHTp0kWxWQ462XuHnDkZe4uHwoPPG/tvqTR17vlVx7unz8Nj0/j
4/w6hZyMQMcihfScOGC+BOwHjCBlTrD6SG0Gj1qrCO9r8f6HqzPSlkupG5WNox2VHVvM19fH2/uD
msHlJ/wdrWmCyrqCCYhnJZsC0N0DGgIrIrbISBSnGdxmErr498jIfWplaUAeXlrox3v6yYUnuxo3
WFP836kFZaYAoiIljv5VR8Z1oUSHgjyAOwiVwRATfAKOYHKWZ6UH2gcdzXwd3NOoY816uUun54D/
25c7fsn3uaJLVkmVk4oX8MQJ1hCEM6UAe4AuOSsgCEl7HlUbHA7HaQTY0s4S2ao5YbV5+fq0F0BS
W99etj4xWxwBdoeexjESrKREgTfSNnKllF5wy4NxWgGGNS+So1xOKC7w78bt7TCTDqVBI1ljZfTF
KmC6gWeITkUE4lJ2ECuD1E5SkVN5s25QBz/uXOrlRvBRqY7gyuzA+t9fhsfh/hkA55yz12h9Faj5
AutUMsKNBokNFtO48iQBZNDMaqFlP923HPRQIkXdmvIoOrBl3unj1cvjzbDBBLy5lJiBN7WO4TNj
sQBdkElixqAIEnKGX6NlEAaME+50GnUe+UiqaXe5lfpmbQCKGVaXwDp1fbP/h/F/0VMSW8FKRn8l
JYClohAygfg+A74rwENjtlkpqZNw5az89f5/0p/OZO/vu2hlX7so8JlmFTLvHh6vfr/foHeaKiH1
J8Itpmjk4I0gomciYGKJ09mDcwLApVyh0uV3Dz6zPMcWwevlRlfeWQTwpV4y1nFze387F69YTdpb
lnyCVauDFtjrYAl8gKXLYHUYQJyhpt2Oc9XDMRdCmY5Qg1zkh+Zl/eEjplomtwLwAGcAzCVQEQrx
2gKTAuJCvAfAqwD9BeaN4Eme51I+fHzDqXz42Ap/fd0RfuMW1vPwdbz/fLfLXVTA9ZrESMEVbpwl
RbBChFCZOOrBghyPAlhFjt7+4STGdK0VeDP0BB66te4XmLGnS4+ff7zHPgiQmtesPatxRYG80nHg
aQUMn4HNh2w4kd7FnLVNyr5h+LuRj9C03eVGA8E6r1yIZUsELCoshA/gfHuIgntgvkXCiy4CfDor
mlgs0dsYTeSYDCjizILD/JijRYf5jlaRDlhXAqtPzVTsYd+Hj7UZhQMBr7NAFd2pQ12kitlY84vY
GCXAByXwqzIJVQyPNpc3gsHRtpR6qZW8Q3sgwC9pxvfD/0UY73F47UyoIUBWwgEWj4HVYdpbFcK9
djAJDIyfu0yCoYlpaSAEdNYtrsWdn/zr8hnL7of5eqOAuV4njuDLGQ2k2+Hz/cPT8+3mu/HpCVvX
2no+TFxlcBCrpNBERQhcQgJvcuDwiQqeA/FU1JRF9uT0uI2IznZEdFuzNvO78afD0poC8xD4jqcP
ICcD9qYUmDlYdsDylCKeBUEyItqcE9Xanl9cO1lb860OnQQZUGa7AAsQlYft+Dxunh8enzZTH9NE
8h1A6AnCKs+kASaqa79BEuDheaYAqYsHLAsMgJ1FABI8Ku0edby/aXVbo9agOhhoiyD4ehmx5ng+
saupSQvYtn2NAvgB6xxOCYW5awNmCFEgcAhgWhJnudMWaIN4Iwo0z3oTO8yyHAl28/VG7ZF2ZnN0
S4vcYKbkF3AmNWUyeSwrLvUEXncfcU69zjLwSLyonV6wkIIDx1U0SyKXEiwPp5V+fcCJjM3Sc41D
J3jcjMs0ZW0qOcQC//EXcSkmJsNrGjmo7LOGgAGGx4kIFsBHzJwko7SPNAXtTs/Y6hGrppYF1Ljp
VH7gy7mq+P0A8OR+M+7rilVQoYFmVUSkIwoKFNRJgEqJRatlBv7izR8XtEl1tBIcCg8vav3eNXVL
2PHtcP/5sF419b3Un4iVWFbcAIWNCpumgFSDKrBeso2KcgEwSsR3B9qHIh0pFR3c0SjN1Donrvn1
Mo87/HrIknhV2Vp3yWtqi1MmOBY+tS90Ip/BgKEprSHCY4bXnG7x8D+9xZAO72gUEOM6Ea3FzVxJ
jt/E7656vYFFMZgLnClwXERkY4iLATh+UVxIYQXEtvfsDWwEaVW4WbMLLSnfqfDLb3fbOWFjbK2E
o3OitMRkpMLWcojtwmRwU8zBu3epOM4CgKou39kP2MghRWcBSDl3o31T/nb18/A4bldlzhi4DCp5
EgPDMhEF0iVhPSsP9ManKEpI71TmbGVo5Dds7X3gy2XL2t3D59v7p6lt/LDgnLxPBiwZgIdLRFgF
9LEUQ1IGWlm0xlzAOfG7jv/mmj2U4khx8eCOVk9BO3pubka+hl3/9Sl/0zTSaG5SSo54i3wIIjcJ
XMB61Z4774Vjzp+Ns3DwE0gLL7eCb9clX22dWETn62Hzy8vXw8AGVvbaiqXr2oU14zRFUiSA0Akq
NXAkQwl1wosEa8f0yPRai7B40qEK07WLVlTZkf962Yb1zXg/Trtph7srQGcQm3Y+k1M3JVxdKTYl
xghQi4AaYNdIwGDBgHS5IHI+qyTUeVZfnc6NrW7XrKeb6GRN08v4nMbrl8/fPnwGE/18aF8OAJMy
jJLssTKvNTClIimB71WOLEjt2bnVmeVzjqc9lne2mm07s+bYcFiz+X78fPv0/Ph7U7VBx5YlSxZA
SQAOAvRJRazJA3s1RsVIddTVxf5/FW1asS9aBa97Ws+Vql/G3798nqtUtavCGCuVlQAQM6wlEYEr
hkQZBMjEJOcm5tTvBzocqxWCr/PHeqOWzZelycC6yjoURjjpctYYSFxRAtBUAogoLSyaXDJEQhe4
Op00Ow0r4l+PgIqt6njYrdueU/N65U+07rWQilU7Stk5wLqSUIvdl9YzEmTRROqklchSyaTe3Y5m
cU6UwpYMCrTsTNl232/8Zdj8PLeTAVRE7s51BKabwG4cww7fQqyFWQou+RxF1CLort0cjNXIMHaq
rPDlMpD/EOOh64nRS54z7tCiYL4AXMCbWo0LVgGJoMnJs4ICDNt/YXChFdOu8Qa4PtupZCNZR7xU
cx5c1+K68kAUaLJEZeUxrRpIEGATXFMWTXDmzWro68An/CJcPRTZDJ32G7O91p1EduVUkyHXmEs5
l0V5TYAEg7hGgrhSR8JEplorB57wtAn/z8vw+PyP4/a40Kw+/7hq9XKj2yjXlQP4cruoHGzvn55m
BKuMRjSNVuxyVB5gM0k0IQlNmOgLmiRhMLlhtYr2VPXgYNxWLNOxkhE3SV6/EpQP989jrWI9ze7Y
TeGHeQ2gNGsANhkQPlWSWFUcydoDPTE5eEPfrc/txAtv9+2sBG71tTcdfZ1dmRj2kPqX55/bdloH
Dl5mVJlSLOIEcPm5brVTUoQQIBCU8wDEbvxjNrS73krverM16MWavvo6jpufvx83D5/v67Elk9fn
mAqsqkwpQaWAGHNwSbFWtYEZE0y7kiI0d1ZlkcVZKK/7uCOlxN6trYpDxweMm+W+0h+vb//+Unf2
sBrKBKs7BovSAOUMiRELiQF0s9pTYlihhnFjuDxLo93ofSV2V1u5N+sqqKWGL+Teu5m5fU9o+OBq
ihZn13sClBT3Zhske2BmlEsKriC6qcvgj/uw/fWLVkrREX0EyvbaEwF/sGkatbkQuzZtZQywBXjH
MjlwvD5JYPiFE80sgDLNgfzbI23a7aitSOO2J9K2g/f3LXwajVtP3S4Q3K03JCiBJRwsbDpRCIvM
0MyjTurPZoMP72hEx6LSSvQadxvR8RCdarwTEqt5Cg9QgBVJYi64JRDgvC2sAFnRKiE7ofRdtgTi
gSjHGvnvvi6UcR1l2JIT//f4PPlKVR2MmgqEISQjwShsBqcCAMLCJwk+xlEhTWSAiM5qkX8dvC/x
68VGaOnWZBG+VCvjQR/7abgfpzY+XisKDmeiQECL1heSXKzghxJfgiQKVMe2Keu8eo+ZOBThVCCY
7lgoqTtKDqb6m4MeRzDT57unfe/8rncaO7g91sk55ieE4EiFvSDJOCO9YuB92MnmycOBW8kG25Hs
mi32BN4/PN/eHFBa3L9ec0CMSQMjQBjCnRUJ/KFVNNbt60JYpQp3JzeNHozbynXd8dDWuurmWp/i
fwTszmsCscb+6dNEJqSC6EgAVcIStdgYjPU06qSvXtrGfG4CAR5y3LXAxUZ4O9x0hN9cL17ql3oG
0r67euelE7hDx22AwIgddBw76JLFhubsqbM8AFk49VIPx23k2siOg9go1iuyXn3/qRZXd8k+W2iE
8EEy9vAKCUEjGCT0WVAIMNokmc5O9sHYJ3J9cLWVWvGe1Esf/VTRyuXjHq4cpv2wOuxeq8QYvkPg
SeFmFOop7mF0EHR4gHdcGV6KAQjWeziNFYY6E2ot3kBv3ty8b3B42Ud7ZtEnemB+mNQgMC3Y7wE0
y8HkE66k0SZYrwpra/X7MdpHD+v0haPbZZ7y11vU5LIAkJ/gknjt/BG7tL4IlmPhM3IsZpkkgPL5
SKJyEah+tFyelczbPeHIi3+9eqiCY2xtP45p1mla2twh8JavwFtOwNsBRpAFO9WRzJmIbdeAVqgr
qlDhijPszYJEPNGyFL9txdU9ce28raVmytuiZywyugLMBnQFolMSJdY7WJwaGB7wHDy65Z2Knvun
t0Jb2xF61fn8ukaffr9//nlsKoy4QsFWpkYOMSW2U4mmJItFqQDBhRmAWHV7JscmuhhsCe7dM13T
SrxaS7hervNN7atwpvcqzBLQVP8BU6hkbRjGeXRASZk2nDBtJc4j7mSB5VJglXiO9eti/7BTmq61
og49UZudu/Mhz2BrNaYGpwQtiTj0LjAnwCBwZ2UAzKucoswwutq4e9nZvuXE0LHzDVWd/NGuNFqr
N3TaBrCvvkoPVuLBl3hpwLUwcC3WACbnymXMG0ur3J+svh7ecdHKuwZ2bsvHZZMI/P3LbSX16BNf
22BcptlFcM0QXBU2VDGgkGDkTnOuk6TszJha95d8OLH35MNFK95NR2bBFwb629fN5euq+W64B//w
ZbxvipzeKc9UBIQSOPYnYLmzFEtYMimLBG6H8TdamhejH+toXtzWaiNERxu12UHr357ung+MWEy9
nMxB/HdM4Y5gh+zdEWeUBkCdA/h7VnIpi00KB+O0AnTao9xWzwj6mw9l4a6N8gqoNiUhYhMsVtw9
tqolGrQzIYisyzu56/nhrcidM33cduQdwv7T7XZ8wFnH80yYVBMdsSlQk0EBxw0eB4fb0fDkGKEB
79vEHDNvrrg68nGjrZdbqcfeTN/Qeb/nPzBXtt/xWY9PSMUK3DWgIgUc5LD+I2GxRfCmCreGBLWY
52aU9vk3a6bqcPvr8TTH5cerg4wHkDn09fUnLv/EDCwfRwI3Bft7HLFcO6I1gH1vhbI8v18X3F6S
I0jkqpcgGRhbO7hBDmOnMNEtvcF6q/308PodEBfwbVjXkWD3YDqORC+8kQnCm3+7Q+atxp72notW
4puOGlhun7zE9ODLsF+pNUUpazNKyEQqbHtTCmC0F+A1pAAIzXRichHt2oFaGTpl8UGpZVk83L2M
zw8PUzJbVBBdf96gQAwcBE0BbIbizjBnDdAwBUjPGgrEF+KJom80Ps/jH2t/nm+4aAVdl74HjScx
rLpAfxh/g0ABPGrCc9MH9HtZcY4HB1nM+oqgATYIj22fwcBrpZLlt6tUOPjx6cerF62EY0dsTE1e
v3GG06X/4Qq9SM36GlWXLLD4kmlgBFYnFlHwE/WJKKo1HoJJxRsnmr1rDR8utLp2NisNRq3Oq8qw
Pi2rXTD409T0XxFOKkVYTBDQHQeozSWeomh41IGVoMz7+SKfjyiUG32M7pjc4GYm9GXcDAcHOmit
qy40g//MKhPjFUBU6TU2T2cC7kfxrGlmzXFVy4Eu2qfZjgjX2/m8wPvPy+BuEmUZgnvhAjfnMI2l
WAWxsfASODAlH94puM8Pb0W+7lj8gIfdTUXCRxji7tdLt69b4vzrIGwGqgHhG5MgwsP8Ax4VQWX4
JqnMF+fxtMM0ElzTzrxd02FRPX1+HPbtu4bvth9aSQtQDEYCultBDQQNCh4PIVnS2KXITm69Ohh2
IdW6i2XYuPkgw/Ctv1qcDSIdIAR8Dd7ZDDgHGxFyMgRQOzhdpXjR7N90NsheukapzXa9v2nYUtcJ
z7vVWSuu93j0EOfYalxzHdMnzIs5gceCgCOQLr4eiSRwo00EH2fgmlLxXE6yfOLbtZndnRetOl0d
t/uq999++P3r2GvMDT5Gy6ZjaxW2xuFBFcYTo3N2rGglz4BY/1JjbiPKQo3OutyK/ap4Pd6GdY7O
0RqzHxgqKWZf8QCwoCnudjcZ4GKh3i3OTlmM1kqiepLY5b7I2/ubOasoldvVInhmOsoAZE8g+HcK
m50lA4MRjjFYMZ7lU+tzP2wrlDU9oczRE1UupxVTU434d6+/iumIBGAmEKzBDeckAFzLf/J2Jc1t
HMn6jl+By0TIh2LUvjjCh66lZY1EWyPK9nsnBYhFQogi9EhQHs2vn8xqLF2NapB+wxgcbBBdqsrs
rs7K9UtBiW1BqumkdBuBA9X+V17d7tqA09Mz5ZqboT8711++32xu4DFW6srBWk0RlBGiowPZJC3H
5Ab8E844xGTkjzDYn38Ew643YlIS6yoczIboe3GdeyTAugVyS5Y3HUKs5imIxDxRCHEnuOKww9sW
zLPk4BN4w5vnUztO6RkphzoZV3APR/gp9/Dj/vVBn26Hw72+/Yi4H4dTBR8e+jV1AwJXRwIaI0cI
SAnfYIO2OlJquWuVHCAkjExZkDWzp57669lyPvCnXV6Gq0MeBjdd/UJwDtQ9DS8L4moKGYlLToLV
I1qhUgvH3ZMq5nDuka0EV0pqV6fGPDbyOQ1FdYjknT0J2/yCob6SpFVRwS0UWIErpAch5HyuqU+J
R2p8+2gS5EgpVdhdm5SUqQq5dliFG7CfxLslptkv764OdQG0k1A6lycGKTnYu4HQhsEJm3IZJfwp
bfCKU3h13dO8fpW1Rk7YysiSO3tqmc7N7mFkpz8fRhxikyjGGRKwg9lIlPioZM5tpqA0gYbkny3i
UEHmAOoqD8TM6F4pmN3NP62/LY/oIILuUR8DGO0G1HGiJOYmC8SeFChIFfNg7TsBBsQgNlZOVhIy
q927k+QX9ADnhjfZPcKk1bCRcUtrpkCiZ9uSK6CDk0QxQTlRzFYTjBgnJBytGna1flQWvtktMa5q
7UcUTNjVqS9+7nYawZGJ9e3nopSiC6l2rhKbKHcapBhTmA9lBAg1CSKFCQFShCbThGfJwnjVp6Fw
XNx+npTkmwpPblZRjXsul6N720bjG+cbkjymJVFQG1G/IdSL6IzgwSnx6PN4xNlSDCmpv7YV6hdu
tFo+h84tOoEOGeOMwqY3u/grSBuDDRxUsGgUezBlEEjFRi1lA9Z9TPTJ8fu8zJkIfr5esLMQpyCt
8yWmgl+f4jBsd0pJBkToaUB9MAaljYVjC88oTCFuVUvgaTWE0eR1kpo7Zx4HYzir/vRHTEq6ZYWZ
a7UXl/866vCqA7sNJsANJlT6HIxvifUG3o8QXStiYk0zCMb/q6a3L2jFrl5QeRDTL990ebfDkrqo
YwyUYRsZxOFH3d0Z2hCuW3hObQvWUPtcyKE9Ckra9akRt2B26Ed+M3u4nX/q+8zlhdLZaY5fcoFo
0+SIo8P6RJFAV2kox2wvT2NUbYjCP5/KWNIzVhDbH1NwzeWpDFpwfcB5Hek1QdvQog5DnE+IYJAk
sbzVpFU2RJbAhJXP2mui3mgCKF2eqpRgPPLBW/tyuekr+FmAUmMuaOf759631oOaEDNykxSc2GAl
WCq6aWBPBy7E0+rTNucfRG/ApKRYVNhYHZx4y30TkuNbm/V04T1lmFPIHGbLagwxg+YOlq5X2CHZ
nujpg5kKKjQ79c4uUMcaQJaj0YWoHnebm6vcw+lQ8AeaQr6h1hquudKkMQxMP6w5bhDVtPENp9Yp
Fhx/krp+stQZO7AYVzBmKhVOC6OHnXAwv+Z+b8N0dZg582FnFGGXBI57PhiNGj3o9rbFEnCQXSkE
sEcSfw79oTClxpNyDkNKVmtSzFq2T77+Fq/elvjtYKKDkccokS5itRYVBEFgSNAset1IFUT8b+G3
H4greKpVSC2WC3YimW8/PoBsv9wsljeDSs0mYMI2qNANTaC6CpFQdQ3EJg/HnsIShScVWgzXGAcg
6I8quVnwGjfDNijzze1q/XHXqPYQQHDZydWpF62TsPFIxOIdAUo67EaKBdyaGwrHtvXpfMLtyfx9
Mpem4oJbXh/BP980b5vweuCObuEFYU0yxFOwC4SOHpEVLRzmYG85mVoT/lvu6D59k5KHeYUxw4f5
xF2zmBPJyxAspQOM9Y2yXlBPrDAYLQSFxcKuIrK1EvTL6KJMT+hHc0YkA12iRuxQJKM8iOu7DI/z
/WjOM5sjJ7xtpeGMUIGZlpZ5gsF7wj01UTsajHkclv0w+7hAOgwpObAVDpZ2WCH186uDGo3ZDRmS
StkcLfOMWRtTJCph9lTjJXGIpqoN3OfAmE4hPUsdw6uzyvbh8qTkxFXYux4eLS+vrgaVX6bloBVa
ImXADBtribdakFYmsOZc8PEREAmYcUTHuLoqKbw+PRGWKz6Unkc7DVWzP9btGv3WObRMu2wQ5rh2
gUUwNzEjCRtSWNEKghALKEZdbJ6cDIbzjxuceLXPw4rSU81kRZ2uBZG+f7ne7CPY2fXeNWra4bK1
sWmtBU3VIB6BQHR/DxuNgN0jVIvFXr55cvSov9SZ0FF/WMlWJRFzRRdD7M5c7N/NguorU13iSu7N
R4WBc5oYjIeKYCmxKHnBXAusiWDT1TwyFRSu3gojHufeiJKHynEGPy5OWw5ddQGfCvafT22Tq7w8
s7CzHEO7gkfStq1IiXtjvH6i6b9bZNT0310vWGCs8hjY0V1+A8f5uocD08FNyUaCcUB4Ql+YBsnk
aKswv9AwFsDGH8a7+rMMlne15ZdDENDtbHt/PIVyLQbePN241EbrCdMeFAGLdQIC66JEcJYphYV/
Z4FAj/MOyFpVyOJiT9bX2ZcetDLNsMZUCWcjcY3D9hlw8FtKFTYGAvnmgUY9uCe9Ocq1uaysrU42
1fru7c3s+8GNPbBCGpNPT3goiLUnaAJ6mPLEcOOUiUYG6560rYplRrZWMaZkpqJJrZge1o/tu9Ph
81gjIuF9CQrD93UuzAvGQFU3LcOyvtxnLkqMLoDK5yj6bJ5YB4dfrirLDSriymElb1pXeHO1Evvm
9/BzxCR6k/N6lEFgpw7kPilQH00gyRnEIkIYgwQHIohpsCNhJ1ijn1wFhaucqYPCyyUHNRnMqT5B
REcX++sOc1XuUNBk1xOJWis8PJCAvlhhnCRg5SYiTVbRo4XX4fn8PQdCxlKRd5cnJT9VJuc1yx5V
8Pv79fX6ZlcPnQNDuUkRbUSiHs5OjAYJaxLxHKO6TWx9VAYUTf14QLeY/4w5X4wruZHXFW7UUKV8
e7fZbuabG/+wWqGPguWwrr3YdVaQ3CVPEUuJIkg0umdd40lrYCs6BqLDPSmiWK4yBj7SH1PyUimc
WvFTQP5Sq2HZMaE0lSp7T6UyzDPQJbG3dJvgII3akMYxga1sHAi8JxXeP67PjOsyOflyyIhyrIpj
nF9F/NZlkNJdBml+m5IGG4rjcxGIYWyRGZdIi8X4jDPs8/no25TnPiMF8HJJfaXcHn6UA6MQY2T3
+zd1d/RhrZ5k3gRlLGLAwRNgAcuSNfaRghcGLETqhH2s+rWcd0CdqlC3HPZkuXy42a63m4f5p5Oj
CpsfyJypm/+fC3aFaxFlWXfdTkCRd0FxQjkifbawk9STtPkzixav9HBYyWClb9RKKz4aS8pWwpvm
l30BKNyfC9H5RKnQzjDpdomiHBu9KS2xWD9hf6+kwuNRMZz7jH0CVyclqaJG/3ygwn3dfrpbzo6a
JD2UTzchYeKUISlg6zSuMLSaPJGaJRG0ZLI923ummHlAWsV0glP70Hzw+xFv8diTGeFvhAqK6CQU
pgDAmeawuo066UKSUqY6PcfpSio0q1Bxfehq/f5VO6xBkU5wa1EhQAQ/AYoAsRIrp5IJsEe1S8I+
UwD/uHpBtJGnnqJVdhsXT/Xz8u52eVPDrIxcY7GXJSEmRIq0Cg5M2RIuAxU8BRBnZ9vS9mcuKdOV
E9DYIw7ou/bqYb1dFr3F4JiwkoONYDyoiyLSQBwCoLHIKW/hpjZqEOQrpykpqMSuV3BwHltzbW6/
9TqfdBDvVEdYCmOLGvQHeCkt1mpj1aDykvqgw7ApV2+WSbnUrLL+bFj1Gz493H5e337cbY99fRua
TzlU56IM3insNY45eEGDhZBPHK9b4z1L5km69GCZEclRDirYcZWenCsnh/2/EQ00e7bh1eiyM7ov
KEEwAxpbxXmsFBfReDS+PKiiwbmGhTY9reXtbomR47+7WJJuKuZNzswQo0VH7VX6hpjwuYwlY+bn
p7L/nnOsQW+JAjerAjUgOHjxpQE5oEC/bkTLuHrG0qM9PSMDd1dLtpeVV3AmDkhXze9tp4Uc3AZd
SSWXkkUspIwWsTAjtpaI0RDHJKgKkoH5w/9D+OBCtpV0FCzMpK2woA4ZSvPN1++r9c2yz0IH9USD
tlFg2UI+YxMqD441JATLg+CNt0KPoPT0pyypUaxGzcEN8s/Z3TFrgee0BROidt4r7NLZdCC2trGe
8FbgDnFJF6dUOclg8YqzY2aWI4Cg/dCS0E3j2qgI1yDfBZOReKGxOLqR2tpotY9/BQT0PPBnQfW1
qahN1+YQo3m4/XN92zvdu6hFMmBvN5R47IkjGiVB8QsN7EL0i1p4qrH+7PqzDciY18iYn9y8+WaG
iZI2O2ky4HygqcEIccCIKhiToGVIRlTEfrzUqvaxanKccuyGwaUBmRVN6PrUidyejaa0zFKFfaGj
CmAEq8YSJ0DbpJJHZSPj1tP/NJrS57B9wvjBoILr+byys+eLoYEZ1/efm7vr9fbuAHuerYUss2hs
WxkdvFhNEIitDyckKoeCtnB0+8jjIzAHg9nHkpqLQQUXi3nFulzMhyBA1zeb+eeDZZbb8DnNVGS0
IW3Avs8+SfSONwTsZaci6N2sOQtM1J9yQFLFZFyshlhWaPvDY1kucvuDA0JyD0Q4Gt1i64zAsbAp
+oCGe0uSNVgfILVv6VMdEScLjfsjToYWzC0r0Jm5vcGwAmA7W3Ron3TXG8Axc5ELmykNoFupSJLh
6CFnHE5w7MgqwNKxWMAX4/Od4HtKxhxK3dVJyY6u8aiP0nN+hKjsEvpAKQSZGRi29OGgZnlKNYlw
5FHOvYmGjgjOCtQRgvwNl3eUnrhOF8v7z9vN1/te+pLrcifx/yiQUmJMgB6vfEBDHna5ZdqR2Ejr
EzPeBfe0GFBeaH/HccBYKOhk4KTkocrYoSjyJmejHTOZDnU7srUMy63xjsKZQAUljXURlPMW9CRM
drVt9Qb3ZxyQYiukLIYFzf+ImH3dAV90CfCRN5EKAnoMqpwgPRps9uBlQy0mVsRHIub/nyLaf4y4
rf8RC5aY4KcsMTEsXfx6M9tig/eDLMStAoaWkBS06GiwK3LUGo7+xIlkVnPZqEDlWdiuctIBWYtT
srilB7L+7wYMSXGMX3WdMH3wrDUmgUmMeDLZz8BAl2INRjKA1oaLQdlYf6KCBO5qJOz6N6LuOZt/
Wh4zaXDDqeQanrAyA18d7TP0uSAgueCd0kw2sX429KYqSABr7JQEwYcZ3ftmjJ/W0xdu14QRJEn2
ykWBWDyIQgCnVUJ7Dvt0wIPjhvnAg3mWXId9D8afX53v0fjzq5K/02wH+HE2PPNeL++ul3eb+30G
QS6tB1010cDBIOUIUkURVQIsCK8djzBrSP58atB+0jrB+6sludc1cucH3xdQ/BWMkbsPd9ujkpwz
/WwbmBAERGvGDIT3xDtKHKfCJW4xs3vEvBlMWJIzFxVyjplf8y9fD2Ixy0OdgnCwD2K2gW2TiIcP
aSionQo2pwhDJKPDDOXCC1VbeOhd+J+3YSet9qHU7JpsQDIIsL9Zq7ArgFakkcyAwsukBxUqUPWk
XM7j7PUneLw+oH1eoX05FOG/LLft1b5NWReXC1yLAOKatBxlC8NylYDhKmcaywzTVJ93BOc5R6Oi
7VVBp6SVU8+q2Wpe3ONvO6Rx23UVyoQK0EqNx0IaUKSJQOPRY38bsKQ5lrBK+0hhyjMBX38bwowj
A9cVruwhCQAhmE4PcgW3Gd4VjjhRCdHTJbFeUUIRWjwEa5OV1ffnMF1JxHXt1i6HsDbvll9Arf19
vfzzmOvdbWOHwj64RnPEdvEU/clYkOcNQ0wuoA3Mm6DUk5K8T5cZ88IMx5VMregpU3CzT6zRXQAe
AQjohbpAp9/uG76cErTOGEH5cwgg7hBXL3JDVGMSj4yBUf9Io9X9/GOW5e7ypCSTVWg/gfE9NCuZ
LRF0dhcELboYJNc23mNwBmVL6zDxx1sCprWiQSSVxF9roFKs9EgLlWJsyd9Mn/KHCTHlhssAUOP1
zz75mECDROxqsBdAbYQNB9q5SqDle8ltfKTlQX/+Oi/9EZOS2IqWuOKHeMvNv77MYAvt6zpQ8wB9
F0xOEO4mwJmHqYmWyUBE4KY1Hn40A3yN/hz9xZk8DTnBj3bYm+DLsfARaw2RhsR446XCinGN6cOI
2sU1CHAZXYvv7YhrqpyxJMYua8SsjmAjXzbfln03Z1YBhLQKxQLRAZuio38Knlck1gidok7Y9rZK
ynC+khh3+tIzNR9GLX571UeqOr4uUmsPm8YS6tHH33iKIIeRtM4YJznIXP2k5MX+/COY9K+qMFWO
2YqSDT8e6oXC75dXb28ePq5v9+HgYa1XaznoV6BvMx6xirSJpEkxESVEEygoOWBlPU+t1wgtJT+z
yhPJpfJl4CVTE/o587neT3YVIvAF90xs2wgvC/ERPR4tvD0NBz03gNkYnWu1MucVjsoqY2kYJwMn
JQOuwhU/mEKXsy3Yy0dvusznI8PEOBDDAvtSWnRs+hgJCC/huUy6a2vXEwDFLJNJ+ucOtuVys1iv
9rkqVw9fvgCbPwJ9YXZzcz/9Mlssp9ffp5vtp+Xd9OvdBtN84Kzezu4+LnPlzfbT+n5/4cfM13Z2
//kDWJ4fvq4XP067ws0u4v1hDv/dLn+c0v6P98ttzmvc/V4u/Nj09D+bHv7ocQV3IK+H3X/Wt8va
elwwZ//ampPfL6fYDqt/f9/BqF9vb75Pcafjlc1qengdfpy+32xnNz9JxS/E5fRueQ8nx+32JyHN
hbx8Yczffpje/wl7fbn4sHnYfgDaHm4zSDesuPiJUXnhLl9w8bcfJn+AXTi7vlnCJEjAYWp2wV9O
/4SL2+XtT6CgWBgPsx6W4ubCdD/1FvqJvn5B4adiMZjohbOw1HTyLr189esv0/f/+zZNRz6/v3r3
/rfmzeSn42ds6O7yJLycYts93Gv3W0y9qQ1m1ujXOHSdNfZzH8QWzkPvc7fG7l/cj4zNs2IS0i0M
yw9q/GO7ob+92hGRfa31j3w9iev7r/hKgty6hRfpIc8+JEOCzXE56Z0vZz8wa9fk/PEP0Pr3q+nf
X72ffuy678GNmG8WwzvHlUYC6kNfdGlQy8UPONRopHX/D/eXprD3Z4sF/Hk/BX7RWO3tnh8mr3PS
xLTBX6a/3s6X4/ReNm/e/BrOs4XN8fjlfuiL2eLL+vaH0dGCv55cvW/C6+nL35p3cXxauAvscnK1
hW342I2FQ8Zcwhv/IZPQvE9nhhqk9Y/lNT6yy3xTxob+e0YmIAfEx7s4hjgScoClnilIqaevo7sr
AbWmRsBwjY/38fTzdnUBRjBOYGRkCkoH8fEhrhEh+M00AhYdxiCloX6ezv4u+J1gagqMglxwAaMA
aoXh9pWBgZ6ZLxc0y+YCm21FlfhzAgklTIh/iKMPwSxjqGfpDlGqowBMVqXFKIkckrjhSg3dgeUh
FwBQSwMEFAACAAgAA3pESbdt1bnFAgAARwYAADoAHABhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVu
LW5lZ2F0ZXMtbm8tdmlzaWJpbGl0eS1zdGRlcnIudHh0VVQJAAMmKvRXJir0V3V4CwABBPUBAAAE
FAAAAI2UXW/aMBSG7/MrPGmqQlWNOB/kQ1UlGqClpTAROi6myTK2GVZDHDmGrv9+DoEkqFz0ykrO
+76PfXySfpIM54vxbApG/fFkOIjAty3K2Hv60U9TQbBi1Oj+Euluy4ruACvcHS6T7pKtnrnqJmIn
Ces+4T1OiOS5ioVk3Q3DefcFyzdG73XE2w+S56bthx0Qgb3gFDwlcRS1BFH0iDOasigqlMiPXJ79
NYnIClXJR5KxCddPVx0DAgCsf9BahzYlxALLxSiWuNgY9qngwcAJrK+DzhEHrOY4TZwbBk477ugV
8lNUx3Brmx14Tti2JTkmn+mdKPqOoBVFImeyDDU75iXWVafamuE1hF4A8aeuHjFrIYeYbGr/7Vd3
cmd+VVn3qtdsyWPY+sKhDf9kgQEMQlJZHvXwnGtFprVBSwtx2NYSkaaMqPE2T8369ezQSe29OTTn
ul54poCpG/nb8f90jLCJtVYreiF2ydVG7FQ/+0jeGcsvEPQ8Wk0KOY3dWcplGzzaLNcNe15lG1KW
PcR9ovieq48Yp+kKl4NLRVxFVf2A9gnpW557RF72LYV8Kx3OyRGGjLJmkwu+ZXqMVbkMOB1xyUyE
4tF8l02EqMqn/ukYt4zx1+t1gCGhNnPBQfw6ncxmP9E4QXF/MhlPH9DsdYEWM9RHi/HLcH54fd+P
n9HodRqXPxyEDOi1w8jad0CLPBAHtgF7jcp2Lc+hF1SFAf1WWBD0rKAt04sBg7bCX9EAtOtJzghf
c2LAsGoVs3HoMwLkLluwQpmFolGEEIyiFS44QYWSepJvyQbLG9AUy2ekJOaqONTu2kVcf4yHErir
vyDbqqkaSk9UTUiY3DNZ7lLfow0bmevZgO62+ZxllMmF/n+Zer5vQBld5V7rK7Pt2oGhS8HgzPGC
eXbRdZwX5kCbYhtstc6wm9tf93qWR0J9NCyV8R9QSwMECgAAAAAAIHpESQAAAAAAAAAAAAAAABIA
HABhY2Nlc3NpYmlsaXR5L21hYy9VVAkAA1sq9FeHKvRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
ADR6REkO6KliZj0AAIIcAQA8ABwAYWNjZXNzaWJpbGl0eS9tYWMvYXJpYS1leHBhbmRlZC1zdGFu
ZGFyZC1pdGVtcy1jcmFzaC1sb2cudHh0VVQJAAOEKvRXCSr0V3V4CwABBPUBAAAEFAAAAOxdbXOb
1rb+fPkVfLjTIzdB3m/ARuObGV5bt7bjiey0czodBsGWzY0kVJCc+N/ftUGSQUKOadzezhk0Gcth
w1rPWnu9PZCW6zyLRVGM1ObHW8+XH8QiEflNLoT6GzF1ov+uXEer+/1T4XP6MZut56I4/fj+4vbS
P/3+tHm9cp6IxSqdpiIfHdeifBR5kWaLfQVIcbNEqDePS9Fc+pUbmsHUwVW0Sh/ECaDLQY16vWfS
9ePqPltUNrDflQ+iWGaLIp3MGuKK+/KM35XbQuTqubePQkdYUbxoJU5v0vkeEIKwoWGkIaZifST/
4KGuU1VDJkLK+7HaZtllFKuw9KuK0RD+6OoAswBbyDoBiMssXx1chbFiL7LF4zxbF+rtbQ2jQ0xP
576vuRYONN+htsYC29QsjyCdIgNR01EURSJX7c/RJ6GO00UsVCfLViMwDT5qIeJskRSK4uZRcS8S
9eY+F1Gy04Fgv9JiGa3ie/WPtViDD+JsPoyWy5kYzqN0oa3KCxTF/xKL5QqQN/fM/9UNHdsLbdf1
x2N1MD7/Yez/8PGkdr7c6N3G/ex/uArPrz7aF+dwked9kFdFKxV9QZvPZBIlEyGmivLxUv0g7kBE
oV6JKIdztmsjRdPeqYoUGIY3/q83B9G7EYYRjxmHX7SnAwmaSNf8pqomRz//rubal9P88xd1fPk/
7vtfWgJfUWzwRxpHpTnjpYgh6mP1fDHN8nl5cKS4H+zxj+dXP6g3/vhmpEaxjNZ0ks7S1ePpPIpP
ozyNNPFlGUFmJFqxgu8oT7R0JebF8H41n8FOlq6GPdls1mj0ws2BXayt/BQ9ROM4T5crN8tF5Y7/
2vkXo4iISRyb6i83QalIfaNSS8GdZFgiMShH6k9jdzS6jPJPInFmWfxpNPoRDIMkHBWrbGnP4Bg4
aHE3KE8MoCBcpMUKFC2K1XcnUjNBCumqmlic1lVv9GT5gVqpAlu6QjuqEIZOrbqK8TKKD606GY3+
O8RoNMqWIpcABieDNlxgamkyoCG6wrqCYRxH6kOWJi2IIAb9KL7fqTp7Keh3g5eeWdsunSt6V/RU
ROgFrgTplqEY3aRP6JRbcSX9RxEtm2KzRSmWcMXsLBZHVl1snM1mIl6dz5ezwe7w+3LXQc3bcne+
332l0LEG4LDfqPl7GYKEWwrvikFMJkkLhl9SaH3rlb14HH8WYtkCp1TJsGJ11hhvc7qh8YgKjhQI
ji4aIkQsQ680+DA+/ODaMbR5qJFuNJtNIllAksyttG63j5oKxt0MIUJnG0PaVfyS5Z8Gm51RMOkm
XTcFjC47n8gGDJVnJb+8NAnSXAzC0A0+rBcXWVYtb0NDqmQWUzCtq5SKgmwNHaHsMHWV5nQ65RGO
EyKYWkq9vbp4//46PB+Hrn1xAS0nfH97E968D+3w5vzS/1Aedmz35zC4vXJvzt9fhaFMAtgs1lFp
PDWpWjPFy0pjpNuQDi1D7ySPMBhbkhZ5hdxkmMSw0Q0f5wbidXnwVVpKwMFmR1nmJOFqXdKuz4NE
KEyYHwzQe596kPDYsEwRq/l6cSOK1aBYQTcPQzwaTaIijcNilUPRO4vvo/yt+rQo/x6u8ihdFeXa
u/pitCvx5ZL6rlaXDaITBVsdIQLCZAsR4IxF/iByaX6Vd5QqBHUVyXSiJo0rBlAN36oScwX4+yoL
dGj8uKP0CLNk74pLmIPaNWBotYR005CQJCKqnK2kA5hCIE9n6SR5nCVD+JFO1CPXl2E0NQykxxbs
WZTLXo93Mx1+dpaTGjaL2jxaRHciL2c6OF48FjAhhp9EvhCzJoSGZtOghBL1k3gAtgT8SaZoOdPV
ZLdYUJdBBCLEEGq4PT+c30E0VgZA6yc7a8ioOzxisQhy9TMU3j/K83OxWueLBtCNtGWlsyGu6Wad
0SSp3Bx+/mMHEdMdRPrPh8j++RD1PwORcQmxEPPPUMfCIr1bRLMGwPjNmyFuT6e6LAuLJCG8VgFX
92mxCUgY9GYw/IQw/g7q9TPPFhk0+HU1pZzNssWdKn/UC2m5doZnbwHT9jNr1lNT78hKImpOIsuo
pvSvIX4JLAnoGy3bswmbnHQkQmAVNEaqTuZl89mYUIO1XqRQzUJJ/c52J41XACO+XK/El3ffNdvb
nzNiy+JYZ/DUSp7Ay3i8XazSWRDNCvG3W/FWnWTZrGrXuCONKm1B1pMtG7ITR1Dv78T/y46YtCNb
AyPMKUxse0ZAhMbrXN7lG2/NKTccsY60DeQnjOIn+XbxuIhvoqLmCamymsXVwR6O708GJ+9kysps
3cyBG45g6B3ZG0CJaaS/ChR/scofrzOYcQbfIq6ciUhXUgiGCMZIxV5qIRFuqlq4zLMvj2e1ircG
sWcVDND7bYjffpMDv5cl9Il2YV7S1U4d0kQ6NLPNieEkSx7LBolLRtpJkjFNzCdJuwnRNEr62bFt
i0TdF/TUtI1Rfba8Gt9+uHCzxaJi1BdZlPyJ6VJPGFDeeSSHwuJOUpRl28zxAkGxwaY7QXKs3O+0
L+F9YsLqvE8SlzQGKhDfX2elOwjeb3UvEQs9/JBOYmrivc7zCnSyWf7d4Eqs5FDXPgpZiE8tBlzs
zW972zmo9vNEDXNRZOs8FvKAVDn6XcY8UJhmjd6HvQ/dsIxYWATccDWu4ikMJR0q7yFgyvSyJr9O
DnH11XLIUl83h0zIoZ/Ob1R5n2gm71jLX0S+eXzyJ4ZiTA3w6VIWsfswfpCjyJ+biSMRW3q9g2eL
JJX7GT7IRwzyAVg56BwZCZ6OzqtpoCyNZudplySWmMhHCKPRdZR/Shd3F9lqNFrC7+4WEVTkx/KG
aVmiK2b+trpmHGdLkVxE80kSncmxSIV6vZlV206pinztlMMRRt5/C5eyTZ4dLsI+RcljGEsffOv8
UyMM1WSKcecHDJwzi7FD/8nfP4hiPVu9wLeV48rzdsedqBC1SfesXL0Aq98Ndr/+g9w3Gv1rVu7w
vwYn1Xz8H2IPAoPetQS+xLsL4v8we/+RyYlQ1+dtkJvcEv8BmyNvYeLOD+zAfBNKUxm6x8xvt7z0
N0ddn+ElUzyNoup5CvTcbcsF09aLqt9WLEzvygdBMgwsvEVy7S/VQ87mI9za01rW9bGd1EkSNfz3
1XhFYYcID8N08ZB9EqF0aVjdsAs/wwQNCs8ffCMMY6jm5z99+PcVBagY19C52H/wKeDzff/BW76/
Cctb512f7AEoGscN+jZdL8oJcvv72Uu81P444iVXvtsSNclrG64Ge1jX54gWfNGoBmZrzdkRJbv9
NDo+S4yogSaGqDLhgI/vyCXWuz5GBMHEACyl4M+r6c1R2fLZMaavRlzZ6xFX/XWHbg5DN7hDhaEH
gkvM1B/FbNkP3f3Q3Q/d/dDdD9390N0P3a81dEMvmRA03dW7st9W7fYatqBSGGS5O0vFovwXZ/LW
+5NakT+hkQgbzxmJ2fnBDZkgjo6juS9/r+YAB2aZcmw0WOeHMiRmhB9Xk6TJZfRJyNHVfojSmWzs
L7D5KwTC6gySTpP9B8nPkYiyUb+T50gicfaXmPfdJuZeXe531TCkd6QApZusr1CavwRxOwf6S1R9
jTThv480kb+KNNG/kDSxVyNN+uuRJuN1SZPVk6aeNPWkqSdNPWnqSVNPmnrS1JOmnjT1pKknTT1p
Ok6a5H+y27OmnjX1rKlnTT1r6llTz5p61tSzpp419aypZ009azrKmnDPmnrW1LOmnjX1rKlnTT1r
6llTz5p61tSzpp419azpGdZEetbUs6aeNfWsqWdNPWvqWVPPmnrW1LOmnjX1rKlnTc+wJtqzpp41
9aypZ009a+pZU8+aetbUs6aeNfWsqWdNPWt6hjWxUe01kvHmnZ+foWLL96puuJMq3wYh1IHBtEm6
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
8fEtucS868NEEJyYgKUU/Hk1uT4oWz1BxvTFiCt7OeLKX3boFjB0gzt0GHoguORU/0lOF/3Q3Q/d
/dDdD9390N0P3f3Q/VJDN/QSTtBkW+/Kflu120s4gkphmBfeNJPz8r87U7feH9XK4hGNQth4zkis
rg9uAA2y0WE0t+Xf1RzgwixTjo1m19kc1JiM2IfVpFl6Hn2SanR17qNsqhr7M2z+CoEQnUHSSbr7
IPkpElE26jdqjyISJ3+Jed+tY+7F5X5XDUO8IwUo3SS+Qmn+EsTtHOgvUfU10oT/PtJE/irSRP9C
0sRejDTxlyNN5suSJvXfoPesqWdNPWvqWVPPmnrW1LOmnjX1rKlnTT1r6llTz5oOsibcs6aeNfWs
qWdNPWvqWVPPmnrW1LOmnjX1rKlnTT1reoI1kZ419aypZ009a+pZU8+aetbUs6aeNfWsqWdNPWvq
WdMTrIn2rKlnTT1r6llTz5p61tSzpp419aypZ009a+pZU8+anmBNrGdNPWvqWVPPmnrW1LOmnjX1
rKlnTT1r6llTz5p61nSYNSE9Wb+I8zNUafWy0zVf0tUrIKQ+MJkRZ6ujkabrRfRl1PJeTFiI6wuY
kMmExQwSskgOXZFuFxRQiyAu8cRWStKsfsnmAwvL7QJJqi/Vb6V9UZfFiZzEmJRXtC6ot3QW9u5K
lEjFEAvRwEVlYtJSCUYHYGG8t0CYqSzB5FFWZEKLJjyV5SW0sRBPUIx4ucD2r5jYaoHvXaGmJFjJ
FnXXb9/YqReT6Q4ujAhSeViQtjMBWdpZfpNBD9C9y/fV61FhEgmKIi/KV6au35i6vdTUrtX/1f/i
bhZv3rmLmaZpbjaPigf9dBbdyOVI238Tqm6AkMnOR3+18z7gwQ8//HCkn3CLUtdnzCAeQQYNvdBw
LIcYIfYdZHFP2JS/+frbgTe6v2CUyDRVR2foO1/CeeuvIJF+lbGqH9dyubq6zWbr7BogQBMiT4Qh
9QxKTNegDrMM2+Ge4Vme47suZxjbbWgOSW3iktYeLkDKS+/sSLhbqJf31qERzyU+DZjhmjY1KPMC
w6UBNXjIKEA2PcLEM6DVBdfRpVjQPXQwdFOF7nANHpiIvoKL4NcQD+1XAJQiz8LgNQNKMQGg2Ddc
JIhhi4AgiwRewP02oE3Jw0kRzaR6BcLx+g3Gy2NnZ08NP4bEiXfxY6ioyWTS6CHgi1+yVRtu27Ed
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
qNcrrtp1Sl3kG6fsUhh9i2s8123yZHcQ5inOHsapzsG38p+GYKiZKcaH3sRnGcokY7v509/fqsXd
dPmE3NaJq87bHPfihWow3ZNq9AyifjXYfP0HpW80+te0muF/DY5qfvwfEg+CgF51LHyNd7OI/8Pi
/UduToQOlI16bwqp/gMmR9+5xoc+FNPhA+OvafW+8Lsjr/It0KGqkPB4Esf1IwvoueuWC6Hdzep+
W6sw+2A9SHjKbNFhufEf9YPE9mPSxhNRdqjw0z5JZo7/fX65pDBDRIzH+ey++KjGOqXj+obd+BMw
aHB4eh8643EK1fz057f/PqcAFeMGOh+H9yEFfGEY3gfzN1eahgEJkweDomnakm+Tu1nFINffT56S
pebCi9tPdb9y5au1UNO6tpVqiIcd+qwONiiicQPMOpqTPU428+kc+LjO5komjqp3wo4e34hLbB/6
pA4MJw5gqQx/Wk6u9trWz2cxfTbhyp5PuNrPS7oFkG5IhwmkBxaXmpo/qem8J9096e5Jd0+6e9Ld
k+6edD8b6eYJI2iyqXdVv63b7QVMQe0wKkp/mqtZ9be69K33R7eqfESjEbaeMxJ+KFEHNEig/Whu
qu81D/CAy1S00TmYm/PEZkTsd5Pl2ev4o9LU1b2P86lu7E+I+SsCQh4Mkk6y7QfJXxIRVaN+pc/R
QuLkLwnvu9Wae3a739VkyD5QAlRpkl+RNH8J4m4N9Je4+ppown+faCJ/lWiif6FoYs8mmuznE03O
84om2YumXjT1oqkXTb1o6kVTL5p60dSLpl409aKpF029aNovmvQ/i+1VU6+aetXUq6ZeNfWqqVdN
vWrqVVOvmnrV1KumXjXtVU24V029aupVU6+aetXUq6ZeNfWqqVdNvWrqVVOvmnrV9AXVRHrV1Kum
XjX1qqlXTb1q6lVTr5p61dSrpl419aqpV01fUE20V029aupVU6+aetXUq6ZeNfWqqVdNvWrqVVOv
mnrVtF81ITNdveXyE1Rp/SbRlV4y9RsglDlwmJXky6ORYZpl/HnU8dJJGEiaAxjHeMKgJMNAuu+K
bDOggXKCbIUnQjvJ8uYl6w8MLDYDZHWQ1APJvGnLThIiMK6u6BzQr8AsxfYITzOtEEvZwkVV6tDK
CUZ7YGG8M0CYoyPBpGGLylgRxGh1CW0NZASlTFUDbPcKJvSAvXOFU0UCi72Z+s3rMM1yMt3ChSFf
+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
Z2TGtUyQZVlIMeMujNER/HC3XK1+kEVKkslyubj7SlYPa7JekQlZL25n98fPXybJdzJ/uEvqHw4h
Fvb6YiwLRqjnPJVHbwv7HcodO96IX0BVFg56YmHoO2EfZhYLh31EsOUh6tfTEpjIBLNw1ETlbLMw
AIbUoVhDpe1K8zgmBMfxllaCkUorM8mf2Y6qK9QV6z3RigpdHWvX/SJtH+OxhK7bF+Q6rasPjJ9d
jUMK6glU3aW5Rxd3sLHnIn7Yl/dQcFBr8/+yzXxfoVq60f1orsx1W0aExxxNXzBuqSgusk7z4jAf
c+qivcFZbnf7me87HovM0ajS1n9QSwMEFAACAAgAIHpESdJGq+SRAAAA+gAAACUAHABjb21wb3Np
dGluZy9jbGlwLWNoYW5nZS1jcmFzaC1sb2cudHh0VVQJAANbKvRXWyr0V3V4CwABBPUBAAAEFAAA
ALXOvw6CMBCA8d2nuI0JSxH/MYsT0aTRyRhS2hOaIEfuSgxvry/h+i2/rzLmako42zCgh0jAaD0k
6i7Ioto5DL6lqOrQsuVF1dSJOgXbjSQxOIMTcfyV+T0ZHD3yjRGbPNO7VGdptkl1URy2xwY/ovV+
7dhKn5TwqJhHgvwJFwKZXQ+vnw/E4AOji8RL+eeJ1RdQSwMEFAACAAgAIHpESa6IoiXKAgAARwYA
ACIAHABjb21wb3NpdGluZy9jbGlwLWNoYW5nZS1zdGRlcnIudHh0VVQJAANbKvRXWyr0V3V4CwAB
BPUBAAAEFAAAAI1UW4+bOBR+51d4pVVFqtEGc0kAVSOlJGnTZiarIbN5qCrL2IeNNQQj40w7/74m
JMBo8jBPljnf5fjzMbM0XTxsV5t7tJyt1ot5jP46kBJ+FS+zopCMauDW+D9ZHA9Qj+dU0/Fil453
kH0XepzKo2Iw/kafacqUqHQiFYz3QKvxHVVPwD8biad/WFXZ7jQaoRg9S8HRtzSJ4wEgjr/SkhcQ
x7WW1dlXlP/bTJa1buFLBbAWZvdhZGGEkPMbYyfAIWMO2m2XiaL13nIvBex4Xui83+i1xcnW+HgX
OSfPo9Abyp25Ur2RGll+1wX2Ai8a0tKKsrfuozj+m2AnjmUFqhG1R/Y1rw+jtjUr6B1wiOmbVM82
uVQLyvYd/9N7O7m134vsspr0LTlAnXcc2pq2FCfnExZGrKV8NcPzGitLgw0HWEyjIZbJogCmV4eq
sLvPm1OShntzCudjt4hSI9sE+cOb/hxZUS+bZRm/IrsTei+Pela+pL8AqisOZh6dXoVdxu6VynUa
PtOYm0eToKUtOJRfkhnT4lnol4QWRUabweUyaaXaPLB7sQyywD9bXuftpHpqGN6FEfrAoW9yKw5g
xlg3y1zwpVBgE5IsH47lWsq2fMnPyPiNzDTP85Bixl3w0Qn8eL/ebP4lq5Qks/V6df+FbB63ZLsh
M7Jd3S0eTp8/z5LvZPl4nzQ/HEIsHAzFWD710MB5Lk/eFp70KNd3Ao9fQdUWng7EwnDihEOYWSwc
DhHTjIdoWE8rYCIXzMJRGxVAlE2BIXUst1Bru9Y8jgnBcZzRWjBSa2Um+RPbU3WD+mKzJ1pRoetT
7XZYpN1jPJXQbfeCXKdzjYDxi6txSEE9g2q6NPfo4h7mBy7ix0P1ACUHtTX/L9vM9w1qpFvdj+bK
XLdjMOxzNH/FuKOivMo6zwvkjs+piw4GZ7n97eeTiROwyByNKm39AVBLAwQKAAAAAAADekRJAAAA
AAAAAAAAAAAAGwAcAGNvbXBvc2l0aW5nL2NvbnRlbnRzLXNjYWxlL1VUCQADJir0V4cq9Fd1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgANHpESbtUYwpIQQAAaCoBADIAHABjb21wb3NpdGluZy9jb250
ZW50cy1zY2FsZS9hbmltYXRpbmctY3Jhc2gtbG9nLnR4dFVUCQADhCr0Vwkq9Fd1eAsAAQT1AQAA
BBQAAADsXW1z27ay/nz5K/jhTo/ShDbeSAAa33T4mrq1HU/spJ3TyWggErJ5I4sqJTvxv78LUpJJ
mUqs1u3tnKGasVUB3H12Aew+j5gJz8si1YvF0G6/otub+Ts9y3R5WWpt/0a4S/FH61wtr7enwuvw
QzG9vdGLww9vT96fxoffH7avt44zPVvmk1yXw91erA+6XOTFbNvBDz/8YIVFpu3L+7luD/4qPMdj
9uBMLfM7/QLwleDIPt8K6vx+eV3M6ijQR+udXsyL2SIfT1vmFtfVjI/W+4Uu7eNoG4eLsGVFaqkP
L/ObLSAEYc/ByEHMxu7Q/MEHhEnbQRwh6+2F3RXbqUptGPrVxugA/rj2ALMESyRfAMR5US4fXYWx
5c+K2f1Ncbuw379vYAwIj1wRx04oceLEAfUdlvjckRFBELSHKA8syzLIbf+z+qTti3yWajsoiuUQ
QoOXvdBpMcsWlhWWanGtM/vyutQq2/hAsGL5Yq6W6bX9+62+hRykxc2Bms+n+uBG5TNnWV1gWfGX
VM+XgLy9ZvGv4Sjwo5EfhvHFhT24OH5zEb/58KIx3yz0ZuF+jt+djY7PPvgnx3BRFL0zV6mljb6g
1Ws8VtlY64llfTi13+krMLGwz7QqYc56bGg5zmvbMgZHo8v418tH+3dlDCNJuXnjPHzAKDWp+c22
uUA/f7RL58th+fmLfXH6P+HbXzq2PuS4SgJka5XG4fCJaYP8NkZ+UnfqIi3z+TIsSl0D/a9N5Bgp
hUSacvuXy6RyZL+0qbTwfjbcCaUC2T9dhMPhqSo/6SyYFumn4fBHNcvgeAwXy2LuT+EzOGGzq0E1
MYHDepIvluBotlh+98J4Jsgie7rWEylo0/XKT1E+cmtcYOladD8XsOtdKpsuLuYqfRzVi+Hwv0cY
DYfFXJcGwODFoAsXhFqFDGiIa7F9wWCBlX1X5FkHoklRxiq93rg6eiro14Onzmwslyssd1/0SCv0
hFSCdelZ3n7WiZsKmdbWf9Rq3jZbzCqzRFh8b7NYyabZtJhOdbo8vplPB5uP31arDm5eVavz/eZX
Dr1kAAn7jfKP1RYkQlpiXwzj8TjrwPBLDk3pdunP7i8+az3vgFO5ZNiSe3tM12e65XGHC4Es2Bz7
eMB4Ij239hBDa38T+ik04Hx5H6rpdKxMAcmKsPa6Xj7KLYz3C4SNXbYKpNvFL0X5abBaGQuT/axz
poFUbHJiWiNUnqX5FeVZkpd6MBqFybvb2UlR1MPrrWFcMsksTJsujaOkuJ1lVWpbLvlkMhEKpxnR
zK6svj87efv2fHR8MQr9k5Pjszejt+8vR5dvR/7o8vg0fld9HPjhz6Pk/Vl4efz2bDQyhwAWi+3p
NJ1wajdCiYoqGJM25ELLcPeyRxgQiqzD3sIsMnAk7O2HTwgPiaY9+FVFSiDBfE9bfJwJu2npYq5T
YJ6psQiFCYuKUNq7X81NIqnEXKfQy2G9GZMcwQdgRO5nREx0mm2MeJIz4VoE7WuEuaRhhAlELIL3
DIdgljXC8SjmFiH7GZmoTK2RACmmLoN+QuAoTPNxdj/NDuBHPt5lpFqpiechN5X2YqlK007xhjbh
r9Il42E16NyombrSZUWb4PPF/WKpb0afdDnT0zaElmfuUUKJ/UnfgVQA8WBOQUWbGrY7ImjaIBoR
4ml7tJ4/urkqRzWLM92VbKIhw/3hEckUHIfPUNt+r+aXenlbzlpAV9bmtc+WuXaaXUazrE7z6PPv
G4iYbiDSfz5E9s+H6P7zIXp/BCITBuJC33xW+XK0yK9matoCmL58eYC7T3zTlsQ6y4gAgKCHRiM4
5cvrfLE6M0D3pkCBRkCCBw8T0uuymBXQ5m9rrnI0LWZXtvnxqmGmGjvC01eAaf2avrZfN9gud/fV
JkoKJb2aq38L8VNgGUB/MrKtmDAXZF85pKTLx9Qe3yhDrFchNGDdznIouCMjAI82ky6WACM9vV3q
L6+/a8L7o0GstRzbGzyV2QN4sx/fz5b5NFHThf7bo3hlj4tiWi2Fh/cVUyYWJB9iWUmeVEFLutL/
LyvC6b6aTUk2Ad62FQTs0PS2NN/CXazDqRYcsX3Fm5KKUfxg31/cz9JLtWhkwrisGbk92MLx/YvB
i9fmyJrTumKDK6XguftqOCUlVe6zQIlny/L+vABlOfgz5ioFQvaWhkqOGSO1hmlsidGqqo3mZfHl
/qhR8W7B7FENA/z+OcSv/lQCvzcl9EF8YVGJ1r06JEcuNLPVxNG4yO6rBokrXbqXJW+S8QdLGxLL
vUqE7tm2dWZvG3po2nzYpL9nF+/fnYTFbFbr6pNCZX+AALsZA+F7owxvXVyNlqWad3GOJxhKPTbZ
GDLMd7vTPkX96TFrqr8LXd7lqT4Fq+dFlQ6Ct1vdU8xSPn4sKjHleKvzPIOobJf/MDnTS0PquqmQ
RGIiGai/l79tLeegXs8X9qjUi+K2TLX5wLgcfjR7nrKtGr0Nexu6J71USwJpOLuo99NoZL5wrr5J
wJS5VU1+njMk7Gc7Q9J+3jMk4Az9dHxpm2+LpuZ7a/NGl6vbG3+AFGPqQU7npohdj9I7Q0X+GCdW
OpVus4MXsyw36zm6U2WuzA2qiujsoAQPn97UbKAqjXxvtsuU1GNzI2E4PFflp3x2dVIsh8M5vA/X
iKAi31dfm1YluiKi37+qr7lIi7nOTtTNOFNHhhbZUK9XXLVrSl3kG1MeUxjzLdxobtrk0eNBWCeV
3Y9Sk4M/y38agqFmphjve5tBThSWjD3On3n/Ti9up8sn5LZOXDVv83mgFrrBdI+q0ROI+vVg8/Yf
lL7h8F/TaoX/NXhR8+P/kHgQBPS6Y+MbvJtN/B8W7z/ycCK0p2w0Z1NI/R+wOObLdbzvbTsTPofS
VG3dXeF3R17lW6B9VaGL9ESp+q4K9Nx1y4XQbmd1v61VmLu3HnRBQ7qiw3Ljf+pbne0buY17tmxf
4Wd8kswe/fvsYklhhYgYjfLZXfFJj0xKR/UXdqPPwKDB4fFd7I1GKVTz45/e/fuMAlSMG+hCHN/F
FPDFcXwXzd9eGhoGJEzuDYqmaUu+TW5nFYNcvz96SpaaG0+17zt/48rXa6FmdG0r1eaWwL53ExHO
EFUNMOtojnY42aynt+8dRcWzsafrk/BIj2/EJXb3vpmo+MQDLJXhz8vJ5U7b5g4yps8mXNnzCVf3
eUm3BNIN6bCB9MDm0lP7Rz2d96S7J9096e5Jd0+6e9Ldk+5nI92KCYImm3pX9du63Z7DEtQOk6IM
p7meVX/vzHz1/uBWlw9oDMLWfUbC975xwwQSaDea6+p9zQMC4DIVbfT25uaKSUbEbjdZnp2qT9pQ
V/9O5VPT2J8Q8zcEhNwbJJ1k2zeSvyYiqkb92swxQuLoLwnvu9Wee3a739VkyN1XApg0yW9Imr8E
cbcG+ktcfUs04b9PNJG/SjTRv1A0sWcTTe7ziSbveUWT+TvovWrqVVOvmnrV1KumXjX1qqlXTb1q
6lVTr5p61dSrpp2qCfeqqVdNvWrqVVOvmnrV1KumXjX1qqlXTb1q6lVTr5q+oppIr5p61dSrpl41
9aqpV029aupVU6+aetXUq6ZeNfWq6SuqifaqqVdNvWrqVVOvmnrV1KumXjX1qqlXTb1q6lVTr5q+
oppYr5p61dSrpl419aqpV029aupVU6+aetXUq6ZeNfWqabdqQna6ehDnZ6jS5mGnK71km0dAaHvg
MWecL18MLdsu1Zdhx3MxYWDcHMB44k7YmMGBLNNdV2SbAQOUE+RqPBHGSZY3L1m/YGCxGSBe/aH5
bbzPm7ZcT4gUk+qKzgHzlM5SbI+MU20UYilbuKhOPVo5wWgHLIwfDRDmmUgwebBl/ql4jFz4zwzQ
9gB4mKTVAHt8hSfMgLt9Ba4jgc3eTP3miZ12OZlu4cKIIHMOS9K1JmDLOimucugBdnj+vn48KiFW
XJZFWT0ydfXE1M2lnnVp/lX/s9ub8fqZu5hZlhXkM1Xe28c36kovhtbjJ6HaDhiZbL3sl1vPAx78
8MMPL+wjl1MaRIw5JCTIoUmYOD73iZPgyEfcDaWg7utvPx147fsLsCWXKbN0jr31Iay3/RIO0i96
bOrHpV4sL67zm9XpGiBAk6BQJgkNHUq8wKE+447w3dAJeehHQeAyjEUXml1Wt3BNHuPyvKzKzpaF
27l5eG8TGgkDEtGYOYEnqENZGDsBjanjJowCZC8kTD4BWtNwCx2UzkfolJ54Bt3uGjzwEH0JF8Gv
A3wgXgJQikKOIWsOlGICQHHkBEgSR8iYIE7iMHajLqBtyweTUt1o8wiEw9UTjBeH/tacJv5Uu+NH
+LMsTSeTVg+BXPycL7twC1/4jErsIA7LTmG9HEmT2In9yMMJQj786MJdW+zGW481cU6Uwts4oYfg
1OzONs5dCfYZwi4RviOl5zqUJpBgDNvVIwJhyf2AhsEOoLszuxpsQMVCZI+hijRjnSk90Vcqve/C
6yWSxxGDgw0vB3ZqBHtBICfwo4QlxI99hncntrb7tfTWMxrIiWR19W4iJ1BJ1NZm9k+jdyrTxexX
c8Gbk6jM73RpD/ABJQfEhevh3QGpNjUmLou5wwhPoExR4sC2EI4gNPSCyIVeFUMMF1XfPjzJxyXU
yMP4y1LPVmA7XR2Mb80zkg9Bz8HM5eLwVKVvL3ZMtupITOPyGAVNtIlw8yHXkkCE5gmK9oC6gP2A
AXqOREyFGzsuCj2obT51IBshBBNLHsQxWPMA/e2iNOXi0FzecCYIH7vbzsyHskonXGF2zofTWg2u
axaXB9iULYTjxIsScM2ZAzuTOz71sEOlCBPpQqn32OPEJevVXhy+nevZm5Pu9a+n57BpOkG0Y0hl
RwzZeOvcVW0tVHNQUHD45IG5An6aJCaB50YRc1wvgGPnhswRHgkdCCGKIylxhJOvRhKqclzMuiNp
TGsi6J7cnNGOMUsfxygwW6/TilbO6mfLrFeKYdjs6ICaowqMJMSUOR4nULtD5Du+6TRujImHYxLj
MGxslNre4Q7LVhtFxxZSYrx1Ihc6vS3zJdQRXqUeSDfFBwwdCNOdA0JFkphCQk13DqgjUCIcEvki
In7kY9f/6gpcrKx3p3U9arUhpl240+1KAj/z+kHTq4cPLSCxAq5jBrkbJFxiFDghJcKhAYAOfKiI
0AtJ4HJIMcJfRd5hvzuIjolb8WQd8ShaHYOHhVSL9c2TAfG4yT12qR+6gYNcBjvD9WJHiBByj3w4
BD5HLCZf2xkbg200inWhmaw3LBz8FQqMoZ14phKLAPiO9OEYekAYETQSGQXCwaEfo1iEEafyeQrK
2nkb8Rh1INZ0az+c6ixXFdEARefY3OVVGyESk9gNiYOEa9pIDLTIpdghNPBiIVmAKo6xBf4cyj+I
tUYMa/PdUaxH28B1V6prbr61kfWHc3/jzHRDdlD3QvgNQQQEc8yAddCExNDPI2GYCBClkDOPQ7cH
SvKUINaudm9kM9oKYow6sj8maCuI47R1DPkBNgeRVw0pFjRKYqgfoJ2hDXHqOdILAod4UehGoKJQ
gp+CvuljR5lOd5zBcYo7okjZVis6VbOrsrjTZgXMbIPeA2EC+jNy3FCYBXClIxnwED/0MdSQIOQo
fNIGWtnesYFWoy3UGeqohJkphHXluDvNF+n6uLrYnFWCGfBRqHgiCqFgx3BMg8gPgVeHsEkECZD/
9YLtp6memu+c9Dfb5p1OwUD3tDa6dlRZx47KJuN1BUpfvlTjfFOFiDkAQviE+ChxBDd0CiHiBEkA
rTJECXBwEYhANmrhlpW2+0lHUjXx1kndepr0gDFy4KJqI/vQkKE7AgERzNBqCcl1MXU4kBRMfKCn
UXevbtu02p55BxzpbjH+H3V+k6kpwKk2Jqn4kYiw53HQ7xFzgenFCJieK6AsYNeVOHB96cZP2Zor
490ruRpsg846WprWYrOExc1NMQvL+/myWOcRtK4H3L7OZMyFeZ565EBbAeUXAsMIKOaORFECPDvA
sXQ7M/nYchuY7qCck1rwN7J5rstJUd6oWar9mZreL/JF88iDEI29AIdOVH1DAkcJ5BP0DOwhhgPE
hAz5U/La4aY7xx0TrXYEuiOsZtN+/6hrsyD0XC4jx/ciCMLHEugDgs1BZAICEDZvzJ+ra7/vWIpJ
V9uejMkWM16oWTYuvqzhU1cYZmzOPJRa0EoUKBuH406xqWI8CIEOJcCYpeuBnvoa/2lZ3oJGO6Cl
al0CTvKZVqU/vdIQ5UNiiah3bhgGoKp9KSXwSs91RBxKB3lRgGHb8JDyv6nAdsBsh6m9R2FSrBHz
6hUoxv+bHvib88kM6eSuNNUjcoLQkM6IAen0JLTuxOUR4xxzHrYLbdOK1faEu9xDoR1X7q/rwuKo
xQxvll8KIz3MIeQRCWIaxY6HEigRPtAdXwL7iXwUJzKiDPO4jeSxwS08vAPPhK9Xfby4OUAbIEbE
+9QH7uiFDjHLTHnInYBRWHqcSOLF2EdB8H/EXUtzHDlyvvNX+LgXcPF+HPGU5ZixZGlm7Guxuygx
hiK1fKxn9tc7E8WuLlSjmx0aRvjEZqMIJIBE5vdlJoqtCIs+2rGvbW9su4aCs26gOWL4B4uv8JvK
C4LT4IqIyRJcPAtwxAXQhOBNLqwwnYv8Sxq4b1/N4dC2CrEdd+t3s3neYLBr1iiA2eA5QeLovfFA
uIikGJ/04DKtBkQFREwHQOCGl9Su46qvi3bI60M5JHertfz393s8yi45R2rLkXE7B7xVcEWUADYl
NDhMrwr48+KYiIlz+QqnPZsZLl3s+9OP7tsv2mkNnbkatcKt8fb+eZvuN7MXE/xFWbzlnHFHiece
VViDCgeuSYwKtoTZJNNZ6HUeoS/+3NxIrzpcU2hBr8fGBcwQllEp8fjjLnEwpSI5TbIQgG3AGhDY
ek+yMsKKELww5pT17yBPGLpjkTS6JLP+38K/Pt3c1tVEHsPYZJIEIM0YoiIsFSAyljNivc9EgdGn
SRbFZDhrMXcDHFnMXfNSeOB5h+ZLGn21O37l/u7p4/DwOD7MyynkpAQ6Fimk58QBZSegP6AECYgw
A1WnNoNFrfmBt9V4/8vn/jOfXv5NcsUOa6mbKRtHO1N2bLVf3x9u7ha8/PIj/o7aNEFlXcEE+LOS
TQHo7gENgRYRW2QkitMMZjMJXfxbhBI/trI0IA+bVvPjvfnJlSX7PG4wW/jfU3HJTAFERUoY44g6
Mq4LJToU5AHcgasMhpjgE3AEk7M8KzzQDnQ0ZLd4ZjUd1ZnOQHcaunm83o4zrTIzGfCae/D0FqCp
B3LHgFvBPABXUTAfImTq45rc7XtqJLDm0OBIp2fI8ce3W37J92G2S1bHd1LxAr4gwSmG8ZUC9AOr
mbMCipK051G14y/7aQTY0s4h3ao51rd5/v64F0BSW/cvW5+YLY4Av0Rb5xgJVlKiwB5qG7lSSq8W
YNFPK8BwyMzkKNcqhSamxqxm2qM0zEhWbx19sQq4duDZYuIlEJeyA28dpHaSipxeibrvOj9u3mpz
I/ioOsozKrOjC/94Hh6GuyeAvHO6Q6P+V6joC1gKyQg3GiQ2mKjjypMEoEUzq4WW/UjputOlRIq6
Q9Kl6MDWka8Pn58frocN5i7MpcTkhakpIJ8ZiwUIi0wSYxZFkJAz/BotA0dknHCnI9Bzz0eCXbvm
VurrQwVQzLB6BA6j/tf7f0b/Nz3F/xXYErSYUgJcKwpBG4jvMyDMAkw4ZpuVkjoJV84K/e//3/3p
JMD+uYtW9kMjCVbbHDjt2/uHz3/ebdA+Tkmk+hMBH1M0crCHgCkyEbCxxOnswTwC5FOuUOnym7u/
WZ5jh+CluZkr7xwC+FKvOfO4ubm7mfN+rOY7LEs+wanVQQuso7AEPsDRZXA6DGDeUAN/x9nyss+V
UKYj1LDOSc/H+v0HDPZMZgUACu4AqEsAS16I1xa4HFAn4j1AbgX4MzBvBE/yPJPy/sMrRuX9h1b4
q6uO8Bu30p777+Pdl9td9KRCvpcwSgqucOMsKYIVIoTKxFEPGuR4FMBrcvT2h8MoU1sr8GboCbzO
ow/P25v7y2fYscdLj59/vaupj0vGa96AVb+iQF7pODDFAorPQOdDNpxI72LO2iZlX1H8Xc9HiOKu
uZmBYJ0lF4KulhwOFebgBzC+PUzDPXDvImGhiwCbzoomNlBLbIwmcgxHFHFmymMe5mjaY36inUiH
LigxrBNPe+D5/kPNP/FLmALuAlV0Nx3qIlXMxhrhxKIrATYogV2VSahieLS5vOIMjiafalMreYd4
gYNfE51Pw/9G6O9heCmKqC5AVsoDGo+O1WHgXRUCwMzBJjBQfu4yCYYmpqUBF9A5t3gWd3by7+sx
1oUXc/tFK+thhE6ZffDw3U8fH+6/wGJ8G65ubjG/vA5/Kq90llYS5WucLhk4spFiACcZWXgELvRW
4c+uLBet6Lo3nxndpJvhy93949PN5ufx8RHL/NrSDlDEyonB90qhiYrgiIUEJurAgREVPAcqr6gp
q3jU6X4bEZ3tiOi25vDY3o6/LZOVCtRdoM5MH0BOBnxYKTi2cFIDJvwU8SwIkhGh55yo1vb8dOXJ
bKVv57C1nTmM9Hp8gd+32833ZzD1CxjJX3KsMbJITQIQyTIwROCDxJoEdFmxYLwNzJTXs9zxHIU5
lKKdRCduqgZpVwgOoNKwHZ/GzdP9w+NmKlybYj8OeM3EK5Rn0vhMdK2fSQLcLofJJVE8EAwghuws
XphgqLQb6nhB28FjzbQG1QGmW2QmV2sYMYOsiXRPVXmMAVuaXDN+wPSXU0JhSsPAWQLXHDigCi2J
s9xpC1xOvOKam7FeBXSzLEcQyNx+0c6wA+mAWKyOVbp53HwaYRu3N3df5ioo+EvQTtxKqZUKMlii
uEiIxjVYYk8JnCjgp1zZIMLJuTYDHNm/5SMXrbwdlRzd2jZsMAr4O7ipGg6cfKEVl3qiRbuPqJge
bHPgkXhR6xPBpAUHLrFolkQuJVh+eja7AU5EI9c+cRw6sOR6XIfga6XXEmX+29/EpZg4Mq8pkqAy
LD9AETg9HDyLBVgbMyfJKO0jTUG702p3MMRBpdkKxF53sprw5Zwx/zQA8L3bjPuceRVUaCDwFWvr
iILSRJwEEJ5YtFpmYMbe/LigTRivlWApPCzU4bpr6taA9qfh7ssyFzsVo9WfiMJZVtxkSaLCSkbF
C0wFDn22UVEuAKCL+OYUbinSEbO+eKKZNFOHjkjzq3WOYvjnkn/zOmVr3SWvYVtOmeCY1Ne+0Cms
EQwomtIasCNmL8xpj+R/e417L59oJiDGwySLFtdzlUR8F3/+vE/1GGvhkKAbLYrBXuBOgfUlIhvA
XTE4wgtYLimsAJTxqlF+9zB8/3pzLNnQaF4jSDuF60PeqiXluyn8/sftdgYBxtYqDzROlJYIEFHh
hQhAWcJkMFPMwdq7VBxnAeB6l0nvO2zkkKJzAKScS0Tflf/5/HV4GLcHGDYGLoMCDBIBfYDRp0Dn
JZxnwLYWyH4UJaQ3wrCtDI38hh1aH/hyXUd6ew945nG67LAspkjeJwOaDBDQgeeyypJQiiEps+SL
1hhlOgeE1P5fPbNLKY4kzhdPtPMUtDPPzfXIDwHwf3zM75oiMc1NSskRb5FpA/wggQs4r+CcnffC
MefPRrzY+QnMi82t4Nue4NtZ0Z+fbubSUoG0Thrmk1bA4ywGxKIEqOtDwl+18jzEXMsJFzxi38Vq
5EOapq0TK1xwNWx+f/6+dKmg3y8FjrpaDTitTlMk+iIDIKAS4E0xlFAnvEhwak0vQHS4fmE10nLx
praLVlTZkf9qXdz4brwbp9vnw+1nALfgFXfWmlM3JRFcKTYlBvRBlYAzwFqsgG6KKSFcEDmflWjt
jNWfTufBdm5XrDc30ckEpOfxKY1Xz19+uv/ypeLPvWY7gGrKMEpy5dEaFCYUSQl8r3JkQWrPzs15
rsc5HspbP9nObNvZNceGZSb00/jl5vHp4c8mF4omNUuWLMChADwUKLSKWOlSwLsaFSPVUVfj/v+V
Cm3FvmgneNWb9Zz//X3889uXOfdba5WMsVJZCdA0w1kSMSoSEmXgmhOTnJuYU7/KbtlXKwQ/zIno
jVqXNJcmq+AqaVPoW6XLWaMLc0UJwHFAt720cGhyyeCDXeDqdCD4NKCJfz8CZ7aqYyK3bntOJvmF
ftJLgQFtxaoepewcoGxJqMWaZusZCbJoIjUYVpGlknVp31aPZnFOJJjXBBRm2dmy7f76wbdh83Uu
0gSQivEbrqPncD5glgwL/guxFnYpuORzFFGLoLt6s+irkWHs1C7Al2sI8UuMS9MTo5c8Z7zRSEF9
ATKBNbUaD6wC+kKTk2c5Bei2v2DQsBJz0xNzXT36y8Pz41P+53D7XLfPfxnvnmZ/gN6MJ808Bz4b
rQD/6kXBGkFGjNAp5MgV9WfVifQGOjKTzpPt1OwhiAOrbjulLxjGQRBaQ3pc12ocQAUm02SJyspj
FiSQIEDduaYsmuDMq+UTLx2fMPnQuhTZDJ16PXyNQSfvVInqdEYrnKCcy6K8JlpoENdIEFfqSJjI
FCCOAyN/+nT+1/Pw8PSv40dtNbM6/vGp1eZmbmMnKgRfbleJvu3d4+NMC5TRSFHwgLoclQcuQhJN
yOwTxuWDJkkYDHtZraI9lexb9LsSa+yIZaYYybufptvf40O5vR+eFjwlByaUs4bQ4MCqO9B3x4Qj
0QdTdMkhMP7DPGXvI1cC7BIKq6/bCdnrzoScPdAhrCr3z09f2wJ7B85Jgsci0AkmVQO4q1yv1Sop
QgjgxMp54GfX/zEl2bW30rvOoR0HvTq0n7+P4+YrRu6+3NVXFE0ei2MUuE5ligYrxQTnYE5jrTIR
xhJMG5AiNHdWZZHFWQi1O9yR1H7v0XaKQ+eQjxu22qBfr27+8VwvKbLqhgVDq5SK0gBDDYkReUzA
u13aU2JYoYZxY7g8a0a73vuT2LW2cm8OqxIsNXwl996OzAW9QsMHV6PzuLveEyDy+B4GgxQZ1Ixy
SeGsRzdV/fy4kdq3X7RSio7o42ZOksAfbJqrG1yIXa2WMgaYDqyxTA4sq0+SwBnnRDMLgFJzlo5Y
nnWvrUjjtifStsNV9kW9GpVbT/VvAEysNyQogSlVLDRAI8QiMzTzqJP6q4mA5RON6JjkPRC9OtZG
dHxhVlXeCUXW6I4HGMOKJDEXvN0MVMQWVoBoaZWQWVH6Jreb8eVHx6723H5fTcZ1JsPWfP4/x6fJ
VqpqYNSUsA8hGQlKYTMYFUAIFj5JsDGOCmkiAzR31qWZl877Er80tkKzQxtvORXzZaRJ6+ilu7Sz
L+W7awaJcVEihpJ5xgtzFCRWLBAdBTPZA4ALq+K/w/4acaQ75N3wpTrQZTT5H4e7caoz5jW35VAx
Crj3aH0hycUKtijxJUiiYCewrtM6r95CMZYinPJL0xOrSerOJAdTzd+iCBtOzRN0Pl/u2a06XjHx
WEbDMdQjBMeoghckGWckrD8YQ3ayunvZcSvZYDuSXbHVbeu7+6eb60V0AF+dUQN5jEkDPYBXxKtf
CcyzVTTWN2cIYZUq3J28jr/ot5XrquMwrHXV6rYmzv8KNIhXdFWhyPRp4mVSgbMmgGLBYli8uYCZ
Xeqkr07DxnxuLAYGOW7poLER3g6dI2Y3V6tF/VZfv7a//rFzGgmss+M2gJ/GAluOBbbJ4o2L7Kmz
PAA5ObWoy34buTasc9Y2B6nyn5L/uChYwIw/xxcFMPeS+ofj5bRTCPMK+I8Mmw7YAtbVwdfcRa5P
sxsc4EiUHVpakWXHxG4U65VZfP70sZZX7ILMtlCwVGCq8F6EkOB2g8FwThYUXLQ2Saazg8zQ94kY
M7S2Uivek3rt5R4r3rt82AO+ZdAX60PcS50IAqAQeFJ4wY96ivfCHbhtHjwGpIHfpxiAg76FnTtA
oWeC1dUK9PbNzXexh+c9XmIWzbgHcowhLQLbghVswEQdbD7hShptgvWqsNaz7Ptohx4Og1eObtdR
6n/e4Ewuy7AZJ8ApXmoZxS6dJILlmHAHfcb1TgJYsY8kKhezY9FyeVYodzfCkYV/aV1OweG71Q6m
wDTrlGFubl9OaKUuU/UDrL2isuDtH+S7JuJVFsB71BVVqHDFGfbDtTlTWyuu7olr56uCNUPTJttj
kdEVicyXAVUsiRLrHRxOrYoDpogvunqjZPt+9FZoaztCH9wmeTmjj3/ePX0dm8w2nlDQlamUS0xp
jVSiKcliMjSAP2QGQGq98s6xLDgGW4J78zjndBI/H0p4eFznh9qlcKa3FGaNwar9gC1Usl6BwH10
QOqZNpwwbSXuI94OhOMCGNF5jnUTxf6wUZraWlGHnqjN2xDmV+KDrlUYEJwStCTi0LrAngAHw9vq
AViDcooyw+jByxAuO1dinRg6er6hqhNi26Xka+6OTler9ll/6UFLPNgSLw2YFgamxRrwoFy5jFkD
aZX7i1n/5RMXrbyHWNRt+bguToK/f76pYRG0iS81ZC7T7CKYZnCuCksqGZBwUHKnOddJUnamT613
9t6fuM/3/qIV77ojs+ArBf3j++by5dT8PNyBffhWQ837ELl3yjMVAVQFjnUxmGYvxRKWTMoigdl5
JfJ20PuxOxqrx9rZCNGZjdrs2MAfj7dPCyUWU3U6c+D/HVP4lgWH8Q9HnFEaOEAOYO9ZyWWVhV72
0wrQqS10Wz2D/nfvy8pcG+UVZ2CkQ8Syfqz08FismmjQzoQgsi5vZK7nwVuRey5mq9fWOpf3+A7R
uTqovhkvAC01+A4giTrLMRsbC8BCSWEpLbVS6nN0dtd3fw671pXUqiP1ldzfb3u4BZ+9yyYJ5Hu8
3oXCFxIytKUWljsX8I7ZWpISnD04Zi7EvL7htu+pFeGqJ8LIO7Gi32624z0elwr2pZqop02Bmgw7
77jBt47i3Wh8/5rQwO1sYo6ZV01V7fn4aa/NrdRj74hcz3cjr/6FYdr96wfqu3xSsQIvkKlIAUA6
TJvijsMea4W3BINaHZCml3b860Om5PBdDMcjbJcfPi+CbbCR6CTrT7SbiRmwO46E+nZGBSfYcu2I
1kDsQD2V5fntam/3khyBcJ97sbmBdhZ9YGzt3uYuH1/yX+O3igpqqI7V/FfUoDSeGlIsxs7h+IHh
wPAFV0VqmoHgnl8FUfvvTSQs2i9amQ9d3CCHsZO966beweLWO2KgRw7YNng3zOtKsHxwBjBPI7yR
CQCOf70277WSwvaZi1bi6840sNxm8hPTwJdhb6trmF/WMriQiVRYcKsUECkvwG9IASSK6cTkCu+0
HbUydMpiBqXWZTHh9nl8ur+fEkKi0qj68xoFYuAiaAqg/BTvW2PmKxgFWN8ayhkDRKHoK5d55v6P
XemZH7hoBT0sfRnqC40Piuh/Gf8AqABMekL00wf0fFlxju8RtJg5EUEDcBQeq+aDgWWlkuXXU7nY
+fHtx9aLVsKxIzaG969eeaXj//F2Zc1x3Ej6nf8FCtzHI05bMfKEbHq887bRp8UQRWpJSrOeX7+Z
qO7qQhW62d5hWOEIUSwYyKwCEnl++c7/eovisEZOjKqyx1pbMg2MgJiJRNSfqE9EUa0RNJqKVwBO
3zSHBx60vHYKcFdGLeArM5xPy2oWHP5tqgu9CCeVIiwmUOkcB2OLS0QdNjzqwEpQ5u2Eqs9nGMoN
P0Z3ttzKjbbwl91mNYFJ0lpXXkAmWp9VJsYrMFKk11h7kgmIH8UziEzWoFfOJ7ppV7MdEtbbIwkf
H36fq3cmUZZBvStcYMEp05ivoOCSL7wEDrayD2+k3o2LtySvOzt+hdi3AxLBE0xx//2dOwX38fvr
IGwGYxP0EHSDCQ/fHywSEVSG3ySV+QwIoZ2moWBNO99tTVezFIOXp9WpcMDwY0m9lbSAkclIQHEr
qIFLg4LEQ6U8acyPZhfLiSfTzqhaZrGtNm7ENQ4f/O0McUs6UHXwNXhnMyhsmIiUE6i7LoLQVYoX
zf4ixK0TdTct/aseU7sFUsBIySNCXiv9jpkBewF+wMCPNXA2oiaZScyjoGCUZMyXlgg3BVoyvQ6s
p1no3AUzGdIys+0ws6Wuo2scRc37h5fd0wOiE3KOFRvVdTf8hG5eJxA5DKSadPGAmiiwEjaCwDbw
TKl4re40X/H1YO1x5E3LTpfH7fF0xh/++esfX3e9+obgY7RswKxXmOeLWFbGE6NzdqxoJa9QfP9U
fUNDyoyNjpDZitMRPyDgsQ66ntbozMN7n2IwATFCg6YIiGMyKPGFejezyGaztZSoHiV2Dlxw97Af
neRSuWM0kGemowyCeIEmmVNYMyIZbBjhGIPj71m+JGxO07ZEWdMjypwFXXs3HP/qOcf/7/BPMaAo
gb0ImgfcKTkJjBIJsGELiGidlS4JOFDlL5FDw7MZp8sLcs2N7UEk//r4eA+fsQP8YpTOCTQropMD
QSstx2wn/Cdc2Ig3zV9hcDr/BZzkw4iblljX4WAlF2WStUESrNuAu1V5M6DfaxCgIrNAFKLgCq44
7PBSwGjODv5E7rl/Ox1qSc+50sr5uIZ70EeW3MMvj8cHQxRDE467h9//MSnnYPjx0E2PRaBgCRFQ
fzmiREv4CTZo0YlSy11RcpbFcGbKhqwaSp+TtdrNG3z89FO8HROzuBnKwKJzoLvCVZYQM1zIRFx2
Ekw4UYTKBe7uq0rAce4zWwmetNTul9b+Rhu5jKwO7UgG4xi2+XD5ZmlVUvAKBUJkCBkQMCBU0Juc
eaImlFczus9UpMbDs5uWMtUh184LgyM2k/plh9VKu6fbsbyKDhJK13r7KCUH4z0S6hncsLniAsA/
pY1BcQpH113nxO6sdeaG7YxsubNLM3tjjDxF0Pg8gJZ8phg2y8AOpidSEpKStVCDggYI6l54swBa
BzoLqOt8kApfNigFq6fNp7vvuxN8l6BHYOjIJDVgWxAlsdBCIDy1QEGqWJBBOQHW0CzU207WErLq
vbtFNhwGNGq3u+rrYdIe1UnNFEj0aihzBXRwkilWW2SK6auCEeOEhKtVw67Wr8rCD4clzqtaxxEN
E3a/9G9vnJ03N7p7+NzUhQ0ZAoPfx2bKnQYpxhQmSBoBQk2CSGFCgBSh2fj4JnlQ76c0NEryw+eb
lnzT4cmtOqrxxH90itbYZIJ3wZMcME+RgtqI+g2hQSRnBI9OiVe/xyueo2ZIS/3adqjfurNwNjUT
xKJHayx/YRQ2vTmkE4C0Mdi9SUWLFn4AuwyRzmzSUvqgTMr06nSUusyFhJT6vGFnK5bFGpsd1rWs
l0BJLwelpCIWTTSgKVqS0sbCtYV3FBYNFFUIfC1PGM0BrC/NnTOvoyVdVH+mI25aumWHmbU6ist/
n3R4NeDhRxPhBROKmBCC6UJsMHA+YnJFpMy8n+WW/Lunt29px0mwpXIU0z98GEob5pXJSacUKcMe
cthjCHV3Z6gnXBf4TqWANVTeCl1nQkFLu14acVtm507xD6tvD5tP00iGfKd0DWXgD7XO3vsaQHdY
5i0y6Cqecsy3DDQlVWJ6BVvjT6mMLT3ncAWmYxqu4bJccs31CAX/y/uPPbOVllhQhyEuYJorQilY
XjQpysbEMpiwUr2l2TohoyXf0A75dqxVfl49TyE6MUOvIu8qYeCO1cSA7ohWt4dPZGDTKTAcKSIM
KTW3Vp/7GJ3bWsI4J0FhAHHdFv0+Tm2MKsOpMe/oEEvhIRQbQFNJFd1RCk5stBKMJe09HKvIhbiu
3vfx8l6YDLhpKRYdNvajU3R37IR2EhxDX7UQKMPEYuYwg19j0gYYD2BsBzAFmbALU2E2U0OFZktv
9xbVvFljFbT7EPnr6fH+tlbrjAFtUFbqC7XWcM2VJt4wsD4RPcIj9roPnlPrFIuOX92op1nqgina
jGsYM52K0a3Rbmb7YMba89GMGuraay7RwS7DJlQcj100Go0KMC9sQTAPEJ85RjCJMn8LFaax5s6n
uY1DWlZ7gtRadiwI+Z5uP7ZdZlLJYGcySqRLWP1KBUGgOBI1S0F7qaJIf1WXmZG4hqdexel2t2WL
y+Hh929wvfz0uN3dzyrffcQiEtDiPc2gPQuRUXuOxOYAN6/Csqmrir/ma5yHkpmOarnZ8h438y5z
m8eH/d3v3wZUgDEg49wxC0Pp4iRsPJKwYlCAnQC7kSIUhwa5DJqDDfly1v1i/imZO9PxAu7WJ4jy
D/6jj3+bufcLHBDmsyGBgmmCFbKIvmxBnwCTz8lcTPyr3PtT+m5aHjYdxgyfFxUMvfgWkpch7NUA
ax88QnXRQKwwGH2lCL0B20sWK0HFTS7JfEW7vwsiGegSPWLnIhnlQbp7qmhtf5w8CszWSBQvRRrO
CEVcbmFZIJjVQXigJmlHozGvN48ZZz8vkMYhLQe2w8HOzqs2f3w/avKY9lJhK5Wt0ceAvVRTTkRl
zEf0QRKHmO/awHuOjOkc85vUVr2/qO+Pj29aTlyHvfX8avnh9nZWjWoKB8XUEikj5qxZi4gtghSZ
waB0MaRX4IBgxjM6xu1tS+F6eSPs9nwuPU+mImqH/3VX7tB1XkP1dEgTYo5rF1kCixdz/LBtlhVF
EATLQTHqkr86vRLnP2/z4tOGh30n4wl+OepHP3z8x8Fx9dPuafPtaQkhKnnClDo4BJFH7IVT4CoA
05BxMHuzUlw4dZWKN650jb3TJ2vK2p7SpdK1p073QnR/fFk/HpMdamBjaPF5gKUtyRdrwQ4wCF0j
sL1SgDNEwKoUqmBtbfBXx+amS10IzE2HtWx1srb3dDuHLq+4MMMsqJkzNeQ41bbHYAqACkIMhs5F
tJRYvFTAGI7MJ7CY6VWJkdMVzvjzJyNaHjo3Nfxyu+z5eDuE0zrQxyEXX4tqA7NwaBxDq40nUkoR
OfNgTNBXOlYOi5x1rByeNyww1vkM7BSMuAdN5W4CVjZgIkovwe4hPKOnUYPQdbQoTEY2jEWawzya
OJ1ltrzrLb+bY6C/rF6eTxdsrTXDl6e9yyXZQJgOoONYLCoSWIYqorNMKayzvoiDfpp3Rta+QxYf
q0y/rr5MOkvQ2tWBKuFsIs477F8GOo2lVGFnRhDdAWjUs3cymaNdm8vO2mqxqe6ePt6v/hiDBDMD
y5uqGMBHQWheQTPQw1QghhunTDIyWnfVtmqWObO1mjEtMx0lcc/0vD722NcYv8cdAhg/t/hh/FgU
x4JgDIS0KQyrqGuH4iQxdgParKPoEbuy7Bh/uO0sNytAboe1vGnd4c31IEv8b/HHhBU3pqaAKYPo
g4OvIyvQjE0k2RkEzEPEG8yVBjENJjLsBGv01VWeuMqFOk983HLQk8Gc6kVLGgxgDN1238kDVKcc
mlJSa0WADxLR0y2MkwQM+EykqdZHsnAc3s6bNhJyrm7h8Pim5afL5KbntEDr4vn5bkD2PpqHunaJ
pF5kGuDuxFibsCaTwDFm7lMJSRnQofXr4fJm/gueimZcy41cd7hRc23549Pjy+Pm8T582+/R/cJq
0Ny+O7S2ktzlQBF2j2KPDHR+Ox9IMbAVHQPR4a6K17arnMOpmo5peelUWe75siNSq9Ww6nNRmkpV
fdNSGRYYqMlWDB2fQ9KGeMcE9hJ0IPCuwjl5XZ85r8vwTu/nvXTigKSTK/j3RNfEDkA8GTjlChvc
BgeKGBqH2ANcay60fwUM5FoInWHlE3bO8O+G9ppjPKddOdZtQVHFCP40JErTQ6J0lQRZg2nLcU8h
DBaz+CFcJgVxWxhn2N3+VUlQ574gwfBxS30HmQV+KWe2OkZPn49S5nBtY1GyZMFEBR9CedRkWEQE
C41NSOGwg+FOnbCvIRO0886oUx3qdvOGfj99u3+5e3n8tvm0uGaxb5WsCen17wqmIFzBBhl6aJUH
9pWLihPKEUq7wClQVxlZFxZtxNF8WMtgp+noXit+NspYjbcP/u/HSnd4P+/E4KqmQjvDpDvkQ3Ps
Eqy0RFyXjM1hs4qvx0tx7gtmIzy9aUkVPfo3M/Xz68unp93qpAXTEdrCx4wpdYbkiH13ucKgew5E
apZF1JLJcrFxYTPzjLSO2Qcax9i5+o8ToLFQAlRJWV05sggVFdFZKEwOgfvYYRkvddLFLKXMfXpO
07VUaNahYr05UvHr+zIvtgO5x61FZQYhcgUoMcRKLBHNJsIe1S4L+0apHafVG6KNXDrw9tWb33zV
z7unh919DxQ6cY1VrZbElBGK2Sq47GUhXEYqeI4gzvilrzqduaVMd25vY09A27+U2293L7umMS1c
cVZysG9MAFVXJBqJQ5xPljjlBV6qV7PwbztNS0Enq2EPl/6pr+vjw/dJ07qhOw/VCZbCqDNcVxYO
pUVQCiyPVkHSEHWcd3SdzHLTLrXqrL+awxvET98ePt89/H7YHsdCXjT9ahDXJRmDU0RyjBBKuEXt
cOMEXUwILJur7IDZMmckRzuoYcd1GrrvnVzPQds+rZ5qwAGOxpC3M/yAEgQT/bHPcEBIDJFMQMMx
gBodnfMsllyuKjY7LHFGdRketqSbjmlWc3bE2SLBcpu/YzufWq1V2x3Vr3L8uZYSgM6VBG5WhWjT
Dg6+NCAHFNgGXhTG1RuWCh7pOTPw8LRle9c5giuxOyZ++d/KoIWMLo+hdpxLyRJWjCeLkM8Ju4Il
7DPEJKgKkoHpxv9DfP5GtrV0NCyspO2woMbctc3j1z/2d/e7KQsDKiCN2iaB1Tn1js2oPDjmSYyW
R8F9sEKfAXSbTtlSo1iPmtGF87+rp1M+C68JLSYm7UJQ2OLdDyjx1ttAeBG4Q1zWzS3VTjJbvOOo
WZndGdzracQPtGzvSlKEa5DvgslEgtCIAuGltjZZHdKfwbq+jG/dUL02HbVpbcbQ2beHf909TG73
IZiUTVbMUxKwnaHwSoLiFz3sQvTpWviqqf/tprPNyNj0yNgsXt7mcYUptLY6mGpHl0izx8B9xEA3
GMKgZUhGVLIgeqlV5TXYDJzy3AuDRzMyO5rQeukALxeDXIVZqjwtJKkIBrzyljgB2iaVPCkL9pgN
9D8Nck05LFeMnw1quN5sOjt7s50bx+nu+bN/Wt+9PI19Raq1UGUWTaXI5OBg+SiweQ3ckKgcClrg
6g6Jp1fwXGazn+0kNB3UcLHddKzL7WYO0La+f9x8Hi2z2sPZaaYSA6O4RI+x0yzRsw82cmBOJdC7
mb8IGjedckZSx2Tc7uewh+i3gM+y29b+QmMjgAlWfjK6YIOtyLF+L4WITodCsjVYOSJ1KPRaJ8pi
ofO+lMXQhrnaTWzO3G43v9Txk1U1+7k06bjwn6pNxdCFDKq7Y2AAkBBrmQGoWwEzclVWKbDEsjRX
5eicFju/f4bnLSsdROjaCmle5vKy2g4g1vTQR8gx865iKlAaQU1UiWTDMVDBOCgj8MWkAKPNYslt
Sm+njBwpOefXG57etOzoHo/6dBGMAHvcDVmroN+C+I8MG0ty0BgDpZokuL0p58EkQ8/cAR1EPYS2
nS/vKF14sLe7588vj1+fJwly7gCX4OrVVHJmTIBJokJEnwQcWMu0I8lLGzIzwUV3XSiuLnR84zjg
XERuMfCm5aHL2FjGfF9TLk+5cmNxmiyWIUACvlG43qigxFuXwM4ooPJhRrct3Rc8nXFGiu2Qsp1D
EPycsMRgACsaqjwS94kKAioZas8gCD02hgrSU4upO+mVnIz/T9n7z2eiBz+nhiUm+JIlJubFxl/v
Vy/7x6cvo1jHrQI2o5AUDIJk4DSKpDVoMZkTyazm0qtI5UV0yHbSGVnbJVnc0pGs/7kHm1icwohD
P3aQbqwYk8G6Rwyw6jJhoBYyjwEloNVzMcs2nU7UkMBdj4RDF3FUo1ebT7tTrhZuOJWd57n2K4XV
dajNSgQByQVnSjPpU/+am0zVkACG5ZIEwedlC8eW4J/ujv0HsRv14GBMAvHTEDcELt6Mpin29IIP
xw0LkUfzJtk0x07gP76/3Cn8x/ctf8t8Gvjlan59/233tN49PT4fc1QqGAao3ZlGDrY1R2BBioA2
YAwF7XiCWWMOl5PPjpP2CT4+bcld98jdjG48oPgr2FVP//30ctL3ay6pLZEJQUC0VmhaOCfBUeI4
FS5zi+ULZyy12YQtORvRIeeUW7j58nUUi1Ue6hyFg32QqjlvfSYB/hBPQYNWsDlFnKPPjTO0C29V
b+G5o+SfH+NBWh0j2tXL6kEyCCcIKwr7+GhFvGQGdHcmA2iDkaqrNJHT7P0veHo+o33ToX03F+F/
372U22Nf1iE8GrkWEcQ1KRxlC8OarIhRQ2e8ZYZpqi/7tOucZ4PT5bahU9LOrWfVar9p3vH3QwMN
O3QgrIQKULBNwGoxsAmIQDs4YC+8KDjHOm1pX6m++jN5mRcaaHyfd89ABtYdruyYi4GwecuLXMFr
hrPCEdsvY1MQSWxQlFDsmBGjtdnK7vkZp2uJWPde7W6OqPXL7gto6L/d7f51qiYYtrFDYR+d1xzR
mAJF1zhWnQbDEEcRaANLLSp1VRnBcplzDqX5uJapPV0ytV50q43lkAeBkCFgILxD/+XhJzycErTO
lED5c9g2wyEWauKGKG8yT4y5ZC8D9IzznzOSD49vWjJZh/YFeP3YXqzCbB1j0U3foeyKDwHjTChb
isP8K2y9G6OiUWSVxZ9redas9ErTs2Zsyx+THf5WY41YtUwOtuLRV2/YEYPbJQfyEqwD5tHcx6bu
VghDdGbCJ+eylLPe4Yv5WmpWekkNZkm1278i4Z2HHAg5pAz6LPaPAOsFlFjY/mArqAw2R5Dcplf6
Ck3n77/Z6YibltiOzrrnYyDr/t9fVrChj6VUqAeB9g22PFw1JsINjKm4lslIROSmmAC/NDN8nukc
08XZ/7V2dD1qw7D3/oq8TAJpoH7TIvFQmhZ10GM6ym17qnq0d1cNyomWbffvZyfAtdDApi0PCFLj
OInj2Klj6/rFWQ5UGucZlXOWUrnv50UavtGM74K1AwfXQ49mo6eOMdmqbGv8/JRdVge92THoH7kK
1fELhHUNotmRy5eSUGmdZzLavF+axnvKOJieojpj3cBoEyb6/WMcRtWEfVGnto/iUHB42cTYJMbK
2oh5eo+6tNn+yOoH4Uyz0nTLQGnbM13P4ieYwHi0Zw0006OmZxmCbATn+JrE2JeyVDFW5++1lkE9
ZN/73OqmOQbutzCpko8u7DLG+6U93x4MbF2Frcz8I9fcOn5BgpugNV6frVgttgtUnu4aug/h4vN6
/5wXR4eBcxdq31JBbQUzRlEp3kB3aM/xqNczNM1xZdAdwXj9P/dEBbQ0+5O0zAgLs9F8NceoceuX
XdhdYZ1f7YIvyDPU9yms+t6Y4kGSD2LAUcF8cMEaB3Hqm8bguh7X0orIyegCUGp2wG7plXqyMMOk
Wr3U3rfoTO1Q0O0TdjcNU4NbePQ9prQHUlgbq7pn8szCNUnWwCJJ3q9DyKdwm+ZPR0+sxX6zgW4O
gT43Wa9LsknSjDy+kW31ku3I626LTmygAlXJ7jljV+aql7w8PhiyflVJ+T0Ggz5+zdMh4Ze+uU9E
vILPKhsSuV5ZZhXz2j3UNxu+hV7+N/Two9YrGAHWHqZBzIusrT1VU6zB37UpPYQE84LWx/ceoObF
+o0gp+OT7RM5LYchibZVsh7ppta3Q7LLStgCi2qEPiFG2BmYH7qk/Am8nqXxdl/FQNu+YCk2oMV0
pChyXw+BTz50pS9gbieP6wyQIAEn1KBWTMhPeFhlxUhVGDxgPTWFwXh4Va2hkTztyFDVaAwQdWwL
miLSvTcJ5nck+vbZI4LyENxHS2cmjd6LCPTwWHInBPMPI6+VFTpntQHDpJhTBM2ZIXStYJh9Blqy
hNn8H6UAlmFFN7UCwNhECdHKMgddBgci2BF2e9GnEs3LV1ySILcKWEg87+M5GTqYcqFU21+uFsAa
zNGn91axTaCVm4zB/Aasok6lTwvyKYjIM89YDGO22qbZBRyjtR20w33qsrSLoJYNBnV4/OPxEYFl
kqQp/CwJDA0qSjVG60pT5oFDHKwh82IlmmVrKoXObDZ3r/cLdMe+GR5BO0m6yYuuEFqDUeBbGZnM
FrNreA1gmUXkuFMyWTr3VAyJUQNDaVEBc9+aMNi6BiHIkZhR60TeFdBBXwulL9kjMkLIxk9IqooE
xDF1IofcGi2QPACKnR8vg1kU3C2EA2DBFMRxEDoT7wZaQ2Wgs+Bu6lFgG3H7qg6iEEAj72t0g1TN
RkaM4+Vd4M7pdRIMAyZ2wyQcQTVQPKwG8qx0kBkb0Bt3b2K0JnTrL0RcNI+c2c1Vq/blCQf9SIBZ
92Vj6fAlc6S2r0xAIEu/AVBLAwQUAAIACADzeURJVzd5GcYCAABHBgAALwAcAGNvbXBvc2l0aW5n
L2NvbnRlbnRzLXNjYWxlL2FuaW1hdGluZy1zdGRlcnIudHh0VVQJAAMJKvRXCSr0V3V4CwABBPUB
AAAEFAAAAI1UW2/aMBR+z6/wpKkKVTXiXMhFVSUaoKWlZSJ0PEyTZWxnWA1x5Jh2/fdzCCFB5aFP
lnO+y/Hn4wyTZLxYTufPYDKczsajCHzbopy9Zx/DLBMEK0aN/i+R7bas7I+wwv3xKumv2PqRq34i
dpKw/gN+wwmRvFCxkKy/YbjoP2H5yuitlnj9QYrCtP2wByLwJjgFD0kcRR1AFN3jnGYsikolioMv
z/+aROSlquETydiM691Fz4AAAOsftDC2AkIssFpOYonLjWE3BS91nMD6utGpxd5W+zhHOZaGgdOV
O3CF/CTVM9yGNrAczwm7tKTA5LN7L4q+I2hFkSiYrETNnnnO66JXt2Z4rQMMIP6U6sEmFXKMyebI
v/5qJzfmV5HHrAZtSxbD1hcObfgNxfZIEJKacq+H5xQrco0NOliIwy6WiCxjRE23RWYeP8/3SWru
1T6cy+PCcwVMHeRvx//TM8JWdr1e0zOyK642YqeG+UfyzlhxxkHPo9WqkGbsTlTO0+CBBmEaDrya
NqYsv4uHRPE3rj5inGVrXA0uFXEtVecB7cbSXXvuwfI8byXka8VwGobvMsraJpd8y/QYq2oZcTrh
kpkIxZPFLp8JUZeb/LSMW8n4aZoGGBJqMxfswS/Ps/n8J5omKB7OZtPnOzR/WaLlHA3Rcvo0Xuw/
3w7jRzR5eY6rHw5CBvS6YiT1HdBxHom9twEHLcp2Lc+hZ1ClAf2OWBAMrKAL04sBgy7CX9MAdOtJ
wQhPOTFgWEcVOiH0GQFyly9ZqcxS0ShCCEbRGpecoFJJPcnXZIPlFWiL1R4pibkq97WbbhEfH+O+
BG6OL8i2GtcgZYQ2rtohYfKNyapLfY82bGGuZwO62xYLllMml/r/Zer5vgKVdK17qa/Mto/HsaFL
weiE8YR5fpblNKwUU2yDrcYZdnv76WBgeSTUR8NSGf8BUEsDBBQAAgAIADR6REnQiDHZaD0AAO4n
AQA4ABwAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvc2NhbGVkLWFuY2VzdG9yLWNyYXNoLWxv
Zy50eHRVVAkAA4Qq9FcmKvRXdXgLAAEE9QEAAAQUAAAA7F1rc9vGkv28/BX4sJVL2QY1L2BmWFqn
8GKiRK+yJCd1UykWHkMJa5JgQFK2/v32ACQFUKAsJkrWugVWSmIwg+7TPT3dfQZIdJFnsZrP+0b9
4y8nsw9qmqj8KlfK+I1wS6DfOxfh4nZ7KnwOP2bj5UTNDz+en1yfBodvDuv3d44TNV2ko1Tl/d1a
Oh9VPk+z6baC77//vuNliTKu7meqPvirsE2bGd2zcJHeqQPAl4Mi42LLqIv7xW02LaygYMUHNZ9l
03kajWvi5rfFjN8713OVG8f+Ng4L4U7HDxfq8CqdbAEhCNsmRiZiBrb68A+VPQtzw0Qcoc75pdFk
22kYGzD0q4FRD/6xjC5mAyyRPACIsyxfPLoL444zzab3k2w5N66vKxhdwn1LBIHpSTwwA5c6Jhs4
3JQ+QWC0jSh3O52ORm44n8NPyrhMp7Ey3Cxb9ME0+BhzFWfTZN7peHk4v1WJcXWbqzDZ6ECwYul8
Fi7iW+OPpVqCD+Js0gtns7HqTcJ0ai6KGzqd4EusZgtAXl+z4Fdv6Dr+0PG84PLS6F4e/3AZ/PDx
oDJfL/Rm4X4OPpwNj88+OifHcJPvf9B3hQsDfUGrTxSFSaTUqNP5eGp8UDcgYm6cqTCHOeuxfsc0
3xsdLXA4vAp+vXoUvythGAkbY/hiVi4kTLvmN8PgAv38u5GbXw7zz1+My9P/8c5/aQh98HHhBPDW
yo39/jPdBv6tjPwU3oWXcZ7OFl6WqxLof20sx0jGEYpjbvxyNSgUGW8NKjt4PxlCRlQg46dLr98/
DfNPKnHHWfyp3/8xnCawPfrzRTZzxnANdtj0pltMHMBmPUnnC1A0nS++O9CaCeqQfVVzKWhV9UpP
lj9Sq1VgaXXonirCyKKyquJyFsaPrTro9/97iFG/n81UrgF0D7pNuMDUwmRAQ6wO2xeMFDg07rI0
aUA0yvIgjG83qo6eC/p997kzK8tliY61L3qhQvQMV4J0aXfs/aRbiAkZl9J/VOGsLjabFmKJ6PC9
xeJQVsXG2Xis4sXxZDbubi6fF6sOat4Vq/Nm8yuFWtIFh/1G+e9FCBIhO2JfDDSKkgYMv6RQlJYL
Z3p/+VmpWQOcQiXDHbm3xni9p2sad6gQqAPBsY8GGnNpW6WGAEr7D54TQwFOF/deOB5HoU4gSeaV
WtfLR3kH473UsBG12MqQZhW/ZPmn7mplOpjs5yYcK2gqNj7RpREyz0L/8tNkkOaqOxx6gw/L6UmW
lcPr0NAqmWQdTKsqtaJBtpwmhWtrKvloNBIhjhOimFFIvT47OT+/GB5fDj3n5OT47Ifh+fXV8Op8
6Ayvjk+DD8Vl1/F+Hg6uz7yr4/Oz4VBvAlgstqfSeMSpUTHFzwpjtNuQBSXD2kseYdBQJA3y5nqR
oUfC9n74hLCRqMqDX4WlBBzM95TFo0QYVUmXMxVD5xlriZCYsCgaSmP3pxokwqaEqxhqOaw3o5Yt
KEUQaXJPIUjFyYMQbgvOOwTtK4RZpCKEYQhAgvcUQjGrIBEWR7JDyH5CZJSEGyTQMTFhQfWHrTBO
o+R+nPTgRxrtElKs1Mi2kRVLY74Ic11O8aZtwk+2S1rDatCchNPwRuVF2wTX5/fzhZoMP6l8qsZ1
CDXNHNaUEuOTugOqAORB74KibarIbrCgKoMoRIitjOF6/nBykw/LLk5XV7KxhvT3h0ckC2E7fIbc
9kcxP1eLZT6tAV1Jm5U6a+LqbrYYTZLSzcPPf2wgYrqBSL99iOzbh2j9GYhMaIhzNfkcpovhPL2Z
huMawPjt2x5u3k5VWRKrJCECAALZGA5hCy1u0/kqIKGXGkN/MYQOs/swIb7Ns2kGNXRZNgJH42x6
Y+gf7ypiirEjPH5n4DXjQuP3xvtKK8mtfRt/YFShtMtG+GuInwNLA/qLlm3ZhLkg+3KNhCY8okY0
CXXXujKhAms5TSGbDTW7OtpMulwAjPh0uVBf3n9XhfdnjVgTJbY3eCqTB/A6Hq+ni3Q8CMdz9Y9b
8c6IsmxcLIWN92Uq2hYkH2xZ8Yk4hHx/o/5fVoTTfQlRQuMRNEVbRkCExstcH3Fdrs0pFhyxfZlR
wgij+EG+M7+fxlfhvOIJrbJsd43uFo43B92D93rL6t26arVWbbht7UuQEoZpaL0IlGC6yO8vMqBt
3b8irmjvyd68K2GUMVIShEpIDFdZbTjLsy/3R5WMtwSxRyUM0PvXEL/7Sw58o1PoA7PBomCEe1VI
jiwoZquJwyhL7osCiQvSt5cke5TwB0mbDpHbBcPbs2yrxNgW9FC07X61tzy7vP5w4mXTaUlaT7Iw
+RPdpZUwYJWTUDeF85vhIg9nTT3HMwTFNhttBOm2crvSPodaqYhVqdWlyu/SWJ2C1IuscAfB26Xu
OWIpjx4zNkw53qo8L8DY6unfG5yphW7qmlshicRIMqBWb3/bWs5uuZ4HxjBX82yZx0pf0Cr7v+uY
p2wrR2/D3oZuSztWkoAbzi7LeBoO9WluQdMxZVaRk19mDwnjxfaQNF52D/FvvzcX3z5E+e1DxOgV
YMSvAOMrOBPAr+BQAL+CUwFsvQKM9ivA+AqqDH4FZQa/gjpDXkGdIa+gzpBXUGfIK6gz5BXUGfIK
6gx5BXWG8H7f+On4ytAPlsf6FRf9ReWrN6H+BH5MbcA/00cyt8P4Th+s/rkT/lDF0qqeR2bTJNXs
dHgX5mmo32Urjm13HHA+XJ2UZ5vFQQ/f9+w+HhGpIv3OUb9/Eeaf0unNSbbo92fw3VsjCsfj++IN
i+LAqThWf/OuvOcyzmYqOQknURIe6UNeo3uwPnlvmlIeWVWmPD6Q1Q/shzN96Hf0eBDWKUzuh7H2
wV89za08/ijP2THe+40kwqRk7LH/9PcPar4cL57h29JxxbzNdTecq8q5/VExegJWv+9uvn5D7uv3
/zUuVvhf3YPytP8/xB4EBr1vCHyNdxPE/2H2fpObE6F9H4LB3hRS/Qcsjn4PB+/9hh+YzyE1FaG7
y/xmywt/C7TvMy4e2aMwLF/Agpq7Lrlg2nJa1tvymZK199MtHglmiQbJlX8p34qsv/NZeb2T7fsY
S+skiTH899nlgsIKETEcptO77JMaapcOy8Zl+DkHeSo/vgvs4TCGbH7804d/n1GAinEFnYeDu4AC
viAI7vzZ+ZU+VGbWvo+kABSN49rDqNFyWpyHr78fPcdL1cAL66+ofuXO9+vHTvopXc3V+u2hfV88
JLGFaFgBs7bmaIeSzXra+758mBArslW5Ex49Xdw8KsPW3u8dJoTbgKUQ/HkxutopW79siumLPYZj
L/cYznrZRwhEQNcN/jCg64HoUmPjRzWetV1323W3XXfbdbddd9t1t133i3Xd8QgRNNrku6LeluX2
ApagVDjIcm+cqmnx36joN4ke1Kr8AY1GWHttkvB9O3VAgwTajea2+F72AS40M0XfaO/dnMcjzIjY
rSZJk9Pwk9K9q3MXpmNd2J9h81cYhNwbJB0l2+/FPsUiikL9Xs/RTOLobzHvu1XMvbjc78pmyNqX
A2g3ya9wmr8FcTMJ+ltUfY014X+ONZG/izXRv5E1sRdjTdbLsSb7hVmTbFlTy5pa1tSyppY1tayp
ZU0ta2pZU8uaWtbUsqaWNe1mTRS1rKllTS1rallTy5pa1tSyppY1taypZU0ta2pZU8uanmBNuGVN
LWtqWVPLmlrW1LKmljW1rKllTS1rallTy5pa1vQEayIta2pZU8uaWtbUsqaWNbWsqWVNLWtqWVPL
mlrW1LKmJ1gTbVlTy5pa1tSyppY1taypZU0ta2pZU8uaWtbUsqaWNe1mTciIy782b3yGLG38KuwV
XzL0X7RTRtdmZpQuDvodw8jDL31j404URWESKTWCgag6gLHiIxYx2JB5vOuOZDOggXKCLIVHQitJ
0uot6w8MzDcDJC4v6t9a+6wqy+KWijAp7mgcACVGLrZHwlhphpjLGi6qYpsWSjDaAQvjRwOE2doS
TB5kSZ4AEcRUFbfQ+oCA2AyLAfb4jpHQA9ajO8B4rSSdVV0PiS1CcQz1Mx+Nt3BhKNl6H+akaU1A
Vucku0mhBhjexXW/iCVMOkGeZ7nhZYkqLz3caneu9B8pO1tOIpWv5rNOp+Om0zC/N44n4Y2a67jZ
+iDDBCGjrY/x1l9OZh/UNIFKnSuIvO+///7AOLI4pa7PmEk8gkw68Aamwx1iDrDvIG55UlDrvXH4
MRsvJ2p++PH85Po0OHxzWJe2RoG+YCT4SLddgGLrIqy38RY20i8q0vnjSs0Xl7fpZLW7ugjQDJAn
BwPqmZTYrkkdxk3hWJ7pcc/xXddiGIsmNLukbuHij3FJbBXe2ZKwnM2yfFGFRjyX+DRgpmsLalLm
BaZLA2paA0YBsu1Bk/gMaFXBNXShVI/QhVgqjW53Du7aiL6Fm+BXD/fEWwBKkccxeM2EVEwAKPZN
F8qLKWRAECeBF1h+E9C65N4oDydK/w/+Dz8qyA1QbA6drTlV/DFG9iP8CeKwzWs1BHzxc7powi0c
4TAqsYk4LDtF0jIlHQRm4Pg2HiDkwI8m3KXEZrzlWBWnStgjP2NCY6mjs45zl4MdhrBFhGNKaVsm
pQNwMIZwtQmkDckdl3ruDqC7PbsarEDFPOLRI6gQxKrRpSfqJozvm/DaA8kDn8HGho8JkepDLAhk
uo4/YAPiBA7Dux1byn3KveWMTolQp3U7ImH4gHxzUUEYQjDrv0VudKlFe6THAB9HIqDCCkwLeTbs
fIeakHU8k5FAcjcIGGU24FvOc72ZDvXtFWWC8MjaVqYvymLnwB3arx9PS6603tFc9rDe1AgHA9sf
gGrOTFg3bjrUxiaVwhtICxKhzUD1ZdEOHJ6kUQ6p93Cw9sX88Hympj+cNHunnJ6CSxtB1G2IZYMN
SbQVlUXS98IZ8AsITdnTd8BP7cSBa1u+z0zLdiEoLY+ZwiaeCSb4gS8l9vHgSUu8MI+yabMllWlV
BM2TqzPqNibxYxsFZut1WjVd0/IPSa5XimHSI6hHdSBjZHmYMtPmBDKbhxzT0XnYCjCxcUAC7HmV
QCnlHe6Q3KmjaAihUERbyXeu4mWeLmCX8cL10JJS3GOoJ3TtcgkVg4HeZlTXLpeaAg2ESXxH+MTx
HWw5T67A5Up6s1vXo506xLgJd7yF24Gf0HloNrH6S6NzcKyA+5hGbrkDLjFyTY8SYVIXQLsO5Auo
FMS1OLgY4SeRN8hvNqJh4pY9SYM9IS22wcNChvP1o4Uusbn2Pbao41muiSwGkWHZgSmEB75HDmwC
hyMWkKciYyOwjiZkTWhG64CFjb9CgTEkW1sXX+FCNyAd2IY2tFMI0qz0XWFizwlQIDyfU/kyCWWt
vI5YNSEuG8CteFAfL5yNXrCgx3oW3Fj8BkNcgjlmUNrogARQNHyhyx1UY48zm0NJgbr32JCLPL0D
WrMVGlrV7njQozUjorL1rxsREbRlxHFci2bewzqeeZHXA0H9QQDbEAgaZHNObVParmsS2/csH1p1
NMDPQV/VsSPbxTtCOYpxgxUx28rop+H0Js/ulF4BPVujt6H7BZLjm5Yn9AJY0pTMFqbjORi2outx
5D0H/Vp2M/L1aA11ghoSSqLzSbkB707TebyOegvrkCeYQdMDiUP4HuS9AKLd9R0PmjcPgkQQFzlP
5z0njtVYH2yor1afOxWDgOZpdXR1q5KGiEpG0Xojx2/fhlG62cxEbwAhHEIcNDAF110JsE7THbhQ
cTw0gEZPuMKVlZSyJaWuftTgVEXstVOTdD4LF/HtpuQx0rNQEcgO1DUoMlDHBdO9mwTnWpiaHGo9
Jg60xn5zyavL7NQ18wY40tpqK39U6SQBttplRWCSos0QPrZtDiTRZxY0TAGChskSkBawZUnsWo60
gueE5kp480quBuugk4bKoJTYLGE2mWRTL7+fLbK1H4GQ2LhHS08GXEjOYD9BdgZ64UGhdinmpkT+
gDLh4kBajZ58LLkOTDV0biM72cpWFyofZfkknMbKmYbj+3k6r255YDuB7WLP9AsaDlsJenSKTWwj
hl3EhPT4c/zaoKbZxw0TO3ULVINZ1dp3/aj4MdezLS5907F9MMLBEqowguAgcgAsA4I34C9V/K4b
lmIUNWzzUUS2Gsx5OE2i7MsaPrWEbjD1nodUC5SDQufDYbtTrLMYdz3oKgbQeEoLmP+TDWZN8hY0
2gAtDtcp4CSdqjB3xjcKrHxwLBFl5HqeC9TNkVJCewakUwSeNJHtuxjChnuU/0MJtgFm3UxlPzKT
YoWYXa5AFv1v3HM2+5Pp3o1bUmcPINGe7t18Br2bLaF0DyzuM84x51490ValdOqacJN6SLRRof62
TCxmOJ/izfJLoTt4vQm5T9yA+oFpowGkCAfaHUdC9+M7KBhInzLMgzqSxwK38PAGPCO+XvVoPumh
DRDNhR3qkMCyPZPoZabc46bLKCw9HkhiB9hBrluHUJFR1z0STbrFdiu4iQ2djrC+oXJJXynaa1fa
UIrM/yPmWrobuZXzXr8iy2wg4/1Y4jmZHDszGdnO3bbIlkbHGmquHjf2/fWpQosPdIMUY+skK1Ls
FrqqUaj6vqoCTJYQ4lmAJS4AbQdvcmGF6VzkX7LA/fWZDkvfKsR63L6/u9XLCjMqO4tSQMcUShy9
Nx54C5EUk2AeQqbVgKiAz+ggAzW8pPY9zsa6aB95s5RDcjd7l//2cY9H2SXnyBA5ElfngP4JrogS
QEqEhoDpVYF4XhwTMXEu36CGZxOswxD78fSt++sXrVpDR1ejZrg13j+8rNPDahfFBH81Fm85Z9xR
4rlHE9ZgwoFrEqOCKWE2yXQWet09oS/+7nIjvepQNqEFvRmbELCDsIxKicsfZ4mDKxXJaZKFAGwD
3oDA1HuSlRFWhOCFMae8fwd5wqM7HkljSGrfJljeL8939/VtIo9hbHJJApBmDFERlgoQGcsZsd5n
osDp0ySLYjKc9TK3DzjyMreXD4UHnrd0X9Lo6+3yKw+b58/D49P4uHudQk5GoGORQnpOHDBfAvYD
RpAyJwxMndoMHrUmod/X4v3PV/17voxPDy+Pqwk7zKVuVDaOdlR2bDZf3x/vNgcp58vP+Dda0wSV
dQUTEM9KNgWguwc0BFZEbJGRKE4zuM0kdPHvkZH73MrSgDy8NNOP9/STM092Na6wJPVfUwfDjgKI
ipQ4+lcdGdeFEh0K8gDuIFQGQ0zwCTiCyVmelR5oH3Q083VwT6OONcvlLp3eBfzfv93zS77PFV2y
SqqcVLyAJ06whiCcKQXYA3TJWQFBSNrzqNrgcDhOI8CadpbIWu0SVquX7097ASS19e1l6xOzxRFg
d+hpHCPBSkoUeCNtI1dK6Rm3PBinFWBY8iI5yvmE4gL/aVzfDTvSoTRoJGusjL5YBUw38AzRqYhA
XMoOYmWQ2kkqcnojdbwd/LhzqZcbwUelOoIrswXrf38ZHofNMwDOXc5eo/VVoOYLrFPJCDcaJDZY
i+HKkwSQQTOrhZb9dN980EOJFHVLyqPowOZ5p09XL483wwoT8OZSYgbe1DqGz4zFAnRBJokZgyJI
yBn+jJZBGDBOuNNp1N3IR1JN28ut1DdLA1DMsLoElqnrm4eXzbq6VcDfUxJbwUpGfyUlgKWiEDKB
+D4DvivAQ2O2WSmpk3DlrPx12T3idCZ7f99FK/vSRYHPNIuQef/wePXHZoXeaaqE1E+EW0zRyMEb
QUTPRMDEEqezB+cEgEu5QqXL7x58dvIcWwSvlxtdeWcRwI96zljH1d3mble8YjVpb1nyCVatDlpg
qdwS+AJLl8HqMIA4Q027Heeqh2POhDIdoQY5yw/tlvXHT5hqmdwKwAOcATCXQEUoxGsLTAqIC/Ee
AK8C9BeYN4IneZ5L+fjpDafy8VMr/PV1R/hFeffh+7i5vd/mLirgek1ipOAKN86SIlghQqhMHPVg
QY5HAawiR2//dBJjutYKvBp6Ag8zrzO8rO8eLl9gxp4uPX7/ZYNldJCa16w9q3FFgbzSceBpBQyf
gc2HbDiR3sWctU3KvmH425GP0LTt5UYDwTqvXADmbl85LKoI0GsA59tDFNwD8y0SXnQR4NNZ0cQG
aomN0USOyYAiziw47B5ztOiwu6NVpAPWlcDqUzMVe9j38VPtZeBAwOssUEW36lAXqWI21vwi9tUI
8EEJ/KpMQhXDo83ljWBwtKuhXmol79AeCPBzmvFl+O8I4z0Ol9fgeu/HGgJkJRxg8RhYHaa9VSHc
aweTwMD4ucskGJqYlgZCQGfd4lrc+skf5s/4Ad/1uHnGcsTq09X+eqOAuV4mjuDHHRpId8Pt5uHp
+W710/j0hJ1PbT0fJq4yOIhVUmiiIgQuIYE3OXD4RAXPgXgqasose3J63EZEZzsiurVZmvn9+Oth
aU2BeQh8x9MXkJMBe1MKzBwsO2B5ShHPgiAZEW3OiWptzy+unayt+VaHToIMKLOdgQWIysN6fB5X
zw+PT6upDWYi+Q4g9ARhlWfSABPVtd8gCfDwPFOA1MUDlgUGwM4iAAkelbaPOt4es7itUWtQHQy0
RhB8PY9Yu3g+saupxwfYtn2NAvgF6xxOCYW5awNmCFEgcAhgWhJnudMWaIN4Iwo0z3oTO+xkORLs
dtcbtUfamc3RzS1yhZmS38CZ1JTJ5LGsuNQTeN1+xTn1OsvAI/GiNgrBQgoOHFfRLIlcSrA8nFb6
9QEnMjZzzzUOneBxM87TlLWp5BAL/Mu/iksxMRle08hBZZ81BAwwPE5EsAA+YuYkGaV9pClod3rG
Fo9YNLXMoMZNp/IDP+6qil8GgCeb1bivK1ZBhQaaVRGRjigoUFAnASolFq2WGfiLN39e0CbV0Upw
KDy8qOV719TNYcePw+b2sF419b3UT8RKLCtugMJGhU1TQKpBFVgv2UZFuQAYJeK7A+1DkY6Uig7u
aJRmapkT1/x6nscd/nHIknhV2Vp3yWtqi1MmOBY+tS90Ip/BgKEprSHCY4bXnG7x8L++xZAO72gU
EOMyEa3Fza6SHD/En6726XBjLSwSTEYVxWAucKbAcRGRjSEuBuD4RXEhhRUQ2970Zx8eh+9f744l
ZBvLawRpVbhZsgstKd+q8Nvv9+tdwsbYWglH50RpiclIhZ3JENuFyeCmmIN371JxnAUAVV2+sx+w
kUOKzgKQcteN9qH87err8DiuF2XOGLgMKnkSA8MyEQXSJWE9Kw/0xqcoSkjvVOZsZWjkN2zpfeDH
ecva/cPt3eZp6jo+LDgn75MBSwbg4RIRVgF9LMWQlIFWFq0xF3BO/K7jv7lmD6U4Ulw8uKPVU9CO
nqubkS9h179/zh+aRhrNTUrJEW+RD0HkJoELWK/ac+e9cMz5s3EWDn4CaeHlVvD1suSrrROz6Hw9
rH57+X4Y2MDKXluxdF27sGacpkiKBBA6QaUGjmQooU54kWDtmB6ZXmoRZk86VGG6dtGKKjvyX8/b
sD6Mm3HajDncXwE6g9i09Zmcuinh6kqxKTFGgFoE1AC7RgIGCwakywWR81kloc6z+up0bmx1u2Y9
3UQna5pexuc0Xr/c/vhwCyZ6e2hfDgCTMoyS7LEyrzUwpSIpgd9VjixI7dm51Zn5c46nPeZ3tpqt
O7Pm2HBYs/ky3t49PT/+0VRt0LFlyZIFUBKAgwB9UhFr8sBejVExUh11dbH/X0WbVuyLVsHrnta7
StVv4x/fbndVqtpVYYyVykoAiBnWkojAFUOiDAJkYpJzE3Pq9wMdjtUKwZf5Y71S8+bL0mRgXWUd
CiOcdDlrDCSuKAFoKgFElBYWTS4ZIqELXJ1Omp2GFfGHI6BirToedu3W59S8XvkT8FpM/ilW7Shl
5wDrSkItdl9az0iQRROpk1YiSyXrq31fO9qJc6IUNmdQoGVnytb7fuNvw+rrrp0MoCJyd64jMN0E
duMYdvgWYi3MUnDJ5yiiFkF37eZgrEaGsVNlhR/ngfznGA9dT4xe8pxxgw8F8wXgAt7UalywCkgE
TU6eFRRg2P4LgwutmHaJN8D12U4lG8k64qWa8+C6FteVB6JAkyUqK49p1UCCAJvgmrJogjNvVkNf
Bz7hF+Hqochm6LTfmPW17iSyK6eaDLnGXMq5LMprAiQYxDUSxJU6EiYy1Vo58ISnTfg/X4bH538e
t8eZZvX5x1WrlxvdRrmsHMCP61nlYL15etohWGU0omm0Ypej8gCbSaIJSWjCRF/QJAmDyQ2rVbSn
qgcH47ZimY6VjHbcFmTjh4+b57FWsZ527thN4Yd5DaA0awA2GRA+VZJYVRzJ2gM9MTl4Q9+tz+3E
C2/37SwEbvW1Nx19nV2YGPaQ+pfnr207rQMHLzOqTCkWcQK4/Fx3aikpQggQCMp5AGI7/jEb2l5v
pXe92Rr0bE1ffR/H1dcv4+rhdlNPvZi8PsdUYFVlSgkqBcSYg0uKtaoNzJhg2pUUobmzKosszkJ5
3ccdKSX2bm1VHDo+YFyx2QT9cn3395e6s4fVUCYYOq1UlAYoZ0iMWEgMoJvVnhLDCjWMG8PlWRpt
R+8rsb3ayr1aVkEtNXwm997N7Nr3hIYvrqZocXa9J0BJcWuvQbIHZka5pOAKopu6DP68D9tfv2il
FB3RR6Bsrz0R8A+rplGbC7Ft01bGAFuAdyyTA8frkwSGXzjRzAIo0xzIvz3Spt2O2oo0rnsirTt4
f9/Cp9G49dTtAsHdekOCEljCwcKmE4WwyAzNPOqk/mo2+PCORnQsKi1Er3G3ER3PYKnGOyGxmqfw
AAVYkSTmglsCAc7bwgqQFa0SshNK32VLIJ6ncayR//77TBnXUYbNOfF/jM+Tr1TVwaipQBhCMhKM
wmZwKgAgLHyT4GMcFdJEBojorBb518H7Er9ebISWbkkW4Ue1MB70sZ+HzTi18fFaUXA4EwUCWrS+
kORiBT+U+BIkUaA6tk1Z59V7zMShCKcCwXTHTEndUXKYtm8f9DiCmT7fP+1757e909jB7bFOzjE/
IQRHKuwFScYZ6RUD78NONk8eDtxKNtiOZNdstidw8/B8d3NAaXH7c80BMSYNjABhCHdWJPCHVtFY
dz8LYZUq3J3cNHowbivXdcdDW+uqm2t9iv8FsDuvCcQa+6dvE5mQCqIjAVQJS9RiYzDW06iTvnpp
G/O5CQR4yHHXAhcb4e1w0xF+dT17qd/qETr77uqtl07gDh23AQIjdtBx7KBLFhuas6fO8gBk4dRL
PRy3kWslOw5ipVivyHr15XMtrm6TfbbQCOGDZOzhFRKCRjBI6LOgEGC0STKdneyDsU/k+uBqK7Xi
PannPvqpopXLxz1cOUz7YXXYvVaJMXyHwJPCzSjUU9zD6CDo8ADvuDK8FAMQrPdwGgsMdSbUmr2B
3ry53b7B4WUf7ZlFn+iB+WFSg8C0YL8H0CwHk0+4kkabYL0qrK3V78doHz0s0xeOrud5yn/coSaX
BYD8BJfEa+eP2Kb1RbAcC5+RYzHLJAGUz0cSlYtA9aPl8qxk3vYJR17869VDFRxjS/txTLNO09Lq
HoG3fAXecgLeDjCCLNipjmTORGy7BrRCXVGFClecYW8WJOKJlqX4Yyuu7olrd9taaqa8LXrGIqMr
wGzwyB1wE4kS6x0sTg0MD3gOnvzxTkXP/dNboa3tCL3ofH5do09/bJ6/jk2FEVco2MrUyCGmxHYq
0ZRksSgVILgwAxCrbs/k2EQXgy3BvXuma1qJV0sJl8t1d1P7KpzpvQozBzTVf8AUKlkbhnEeHVBS
pg0nTFuJ84g7WWC5FFglnmP9utg/7ZSma62oQ0/UZufu7oxgsLUaU4NTgpZEHHoXmBNgELizMgDm
VU5RZhhdbNy97GzfcmLo2PmKqk7+aFsardUbOm0D2FdfpQcr8eBLvDTgWhi4FmsAk3PlMuaNpVXu
L1ZfD++4aOVdAju35uO8SQT+/+Wuknr0ia9tMC7T7CK4ZgiuChuqGFBIMHKnOddJUnZmTK37Sz6e
2Hvy8aIV76Yjs+AzA/39++ryddX8NGzAP3wbN02R0zvlmYqAUALH/gQsd5ZiCUsmZZHA7TD+Rkvz
bPRjHc2z21pthOhoo1ZbaP370/3zgRGLqZeTOYj/jincEeyQvTvijNIAqHMAf89KLmW2SeFgnFaA
TnuUW+sdgv7wsczctVFeAdWmJERsgsWKu8dWtUSDdiYEkXV5J3e9e3grcudMH7ceeYew/3q3Hh9w
1vE8EybVREdsCtRkUMBxg6eJ4XY0PDlGaMD7NjHHzJsrro583Gjr5VbqsTfTN3S33/OfmCvb7/is
xyekYgXuGlCRAg5yWP+RsNgieFOFW0OCms1zM0r7/JslU3W4/fV4muPy09VBxgPIHPr6+onLPzED
y8eRwE3B/h5HLNeOaA1g31uhLM/v1wW3l+QIErnqJUgGxpYObpDD2ClMdEtvsN5qPz28fgfEBXwb
1nUk2D2YjiPRC29kgvDm3+6Qeauxp73nopX4pqMGltsnLzE9+DLsV2pNUcrajBIykQrb3pQCGO0F
eA0pAEIznZicRbt2oFaGTll8UGpeFg/3L+Pzw8OUzBYVRNfPGxSIgYOgKYDNUNwZ5qwBGqYA6VlD
gfhCPFH0jcbn3fjH2p93N1y0gi5L34PGkxgWXaA/j79DoAAeNeG56Qv6vaw4x4ODLGZ9RdAAG4TH
ts9g4LVSyfLbVSoc/Pj049WLVsKxIzamJq/fOMPp0v98hV6kZn2NqksWWHzJNDACqxOLKPiN+kQU
1RrPUKTijRPN3rWGDxdaXTublQajFudVZVifltUuGPw0Nf1XhJNKERYTBHTHAWpziYfwGR51YCUo
836+yOcjCuVGH6M7Jje4HRP6Nq6GgwMdtNZVF5rBf2aVifEKIKr0GpunMwH3o3jWNLPmuKr5QBft
02xHhOv1VoTPm9t5cDeJsgzBvXCBm3OYxlKsgthYeAkcmJIP7xTcdw9vRb7uWPyAh91NRcJHGOL+
H5duX7fE+ddB2AxUA8I3JkGEh/kHPCqCyvBLUpnPzuNph2kkuKadebumw6x6+vw47Nt3Dd9uP7SS
FqAYjAR0t4IaCBoUPB5CsqSxS5Gd3Hp1MOxMqmUXy7Byu4MMw4/+anY2iHSAEPA1eGcz4BxsRMjJ
EEDt4HSV4kWz/6OzQfbSNUqt1sv9TcOauk543q7OWnHd4NFDnGOrcc11TN8wL+YEHgsCjkC6+Hok
ksCNNhF8nIFrSsVzOcn8iW/XZrZ3XrTqdHVc76vef/v5j+9jrzE3+Bgtm049VdgahwdVGE+Mztmx
opU8A2L9rxpzG1FmanTW5VrsV8Xr8Tasc3SO1pj9wFBJMfuKB4AFTXG3u8kAFwv1bnZ2ymy0VhLV
k8TO90XebW52WUWp3LYWwTPTUQYgewLBv1PY7CwZGIxwjMGK8SyfWp/7YVuhrOkJZY6eqHI5rZia
asT/e/1TTEckADOBYA1uOKf/4e3KmtvIkfQ7fwVfNsL9AAXuoyP6oXCUW2Nr2mO5e3afHBQPm2FZ
9EqUezy/fjNRPApFFKXZUQwf2hQLDWRWoRJ5filAuZaCEtuCVNNJ6TYCB6r9j7y63bUBp6dnyg03
Q392rr/8sNncwmOs1JWDtZoiKCNERweySVqOyQ34J5xxiMnIn2CwP/8Ihl1vxKQk1lU4mA3R9+I6
Q+zDugVyS5Y3HUKs5imIxDxRCHEnuOKww9sWzLPk4BN4w5uXUztO6RkphzoZV3APR/gp9/Dj/vVB
n24H47y++4S4H4dTBR8e+jV1AwJXRwIaI0cISAnfYIO2OlJquWuVHCAkjExZkJUDeUOyZsv5wJ92
dRWuD3kY3HT1C8E5UPc0vCyIqylkJC45CVaPaIVKLRx3z6qYw7lHthJcKaldnRrzc23kaSiqA7Tu
7EnY5hcM9ZUkrYoKbqHAClwhPQgh53NNfUo8UuPbJ5MgR0qpwu7apKRMVci1wyrcgO0I3i8xzX55
f32oC6CdhNK5PDFIycHeDYQ2DE7YlMso4U9pg1ecwqvrnuf1q6w1csJWRpbc2VPLdG52DyM7/fkw
4hCbRDHOkIAdzEaixEclc24zBaUJNCT/YhGHCjIHUFd5IGZG90rB7H7+ef19eUQHEXSP+hjAaDeg
jhMlMTdZIPakQEGqmAdr3wkwIAaxsXKykpBZ7d6dJL+gBzj3S8nuESatho2MW1ozBRI925ZcAR2c
JIoJyolitppgxDgh4WjVsKv1k7Lw7W6JcVVrP6Jgwq5OffFzt9MIjkys774UpRRdSLVzldhEudMg
xZjCfCgjQKhJEClMCJAiNJkmvEgWxmWfhsJxcfdlUpJvKjy5WUU17rlcju5tG41vnG9I8piWREFt
RP2GUC+iM4IHp8STz+MJZ0sxpKT+xlaoX7jRavkcOrfoBDpkjDMKm97s4q8gbQzi/6tg0Sj2YMog
kIqNWsoGrPuY6LPj93mZMxH8fL1gZyFOQVrnS0wFvznFYdjulJIMiNDTgPpgDEobC8cWnlGYQtyq
lsDTagijyeskNXfOPA3GcFb96Y+YlHTLCjM3ai8u/3nU4VUHdhtMgBtMqPQ5GN8S6w28HyG6VsTE
mmYQjP9nTW9f0IpdvaDyIKZfv+3ybocldVHHGCjDLiSIw4+6uzO0IVy38JzaFqyh9qWQQ3sUlLTr
UyNuwezQj/x29ng3/9z3mcsLpbPTHL/kAtGmyRFHh/WJIoGu0lCO2V6exqjaEIV/OZWxpGesILY/
puAaDstTrrk+4Ly+v3xXM1tpG1rUYYjzCREMkiSWt5q0yobIEpiwUr2k2dojoyR/eapSgvHIB2/t
6+Wmr+BnAUqNuaCd759731oPakLMyE1ScGKDlWCp6KaBPR24EM+rT9ucfxC9AZOSYlFhY3Vw4i3/
sV3e5fyVw1ub9XThPWWYU8gcZstqDDGD5g6WrlfYYNee6OmDmQoqNDv1zi5QxxpAlqPRhage95vb
69wC6FDwB5pCvqHWGq650qQxDEw/rDluENW08Q2n1ikWHH+Wun6y1Bk7sBhXMGYqFU4Lo93A8MD8
moe9DdPVYebMh51RhF0SOO75YDRq9KDb2xZLwEF2pRDAHkn8JfSHwpQaT8o5DClZrUkxa9k++fp7
vH5X4reDiQ5GHqNEuojVWlQQBIEhQbPodSNVEPE/hd9+IK7gqVYhtVgu2Ilkvvv0CLL9arNY3g4q
NZuACdugQjc0geoqRELVNRCbPBx7CksUnlVoMVxjHICgP6rkZsFr3AzboMw3d6v1p12f00MAwWUn
V6detE7CxiMRi3cEKOmwGykWcGtuKBzb1qfzCbcn8/fJXJqKC255cwT/fNu8a8KbgTu6hReENckQ
T8EuEDp6RFa0cJiDveVkak34T7mj+/RNSh7mFcYMH+YTd81iTiQvQ7CUDjDWN8p6QT2xwmC0EBQW
C7uKyNZK0C+jizI9ox/NGZEMdIkasUORjPIgru8zPM6PoznPbI6c8LaVhjNCBWZaWuYJBu8J99RE
7Wgw5mlY9sPs4wLpMKTkwFY4WNphhdSvlwc1GrMbMiSVsjla5hmzNqZIVMLsqcZL4hBNVRu4z4Ex
nUJ6kTqGy7PK9uHypOTEVdi7GR4tr6+vB5VfpuWgFVoiZcAMG2uJt1qQViaw5lzw8QkQCZhxRMe4
vi4pvDk9EZYrPpSeRzsNVbO/r9s1+q1zaJl22SDMce0Ci2BuYkYSNqSwohUEIRZQjLrYPDsZDOcf
Nzjxap+HFaWnmsmKOl0LIv34erPZR7Cz671r1LTDZWtj01oLmqpBPAKB6P4eNhoBu0eoFou9fPPs
6FF/qTOho/6wkq1KIuaKLobYnbnYv5sF1VemusSV3NqNCgPnNDEYDxXBUmJR8oK5FlgTwaareWQq
KFy9FUY8zr0RJQ+V4wx+XJy2HLruAj4V7D+f2iZXeXlmYWc5hnYFj6RtW5ES98Z4/UzTf7fIqOm/
u16wwFjlMbCju/wWjvN1Dwemg5uSjQTjgPCEvjANksnRVmF+oWEsgI0/jHf1Zxks72rLL4cgoNvZ
9uF4CuVaDLx5unGpjdYTpj0oAhbrBATWRYngLFMKC//OAoEe5x2QtaqQxcWerG+zrz1oZZphjakS
zkbiGoftM+Dgt5QqbAwE8s0DjXpwT3pzlGtzWVlbnWyq9f2729mPgxt7YIU0Jp+e8FAQa0/QBPQw
5YnhxikTjQzWPWtbFcuMbK1iTMlMRZNaMT2sH9t3p8PnsUZEwocSFIbv61yYF4yBqm5ahmV9uc9c
lBhdAJXPUfTZPLMODr9cV5YbVMSVw0retK7w5mol9s0f4deISfQm5/Uog8BOHch9UqA+mkCSM4hF
hDAGCQ5EENNgR8JOsEY/uwoKVzlTB4WXSw5qMphTfYKIji72Nx3mqtyhoMmuJxK1Vnh4IAF9scI4
ScDKTUSarKJHC6/Dy/l7DoSMpSLvLk9KfqpMzmuWPargDw/rm/Xtrh46B4ZykyLaiEQ9nJ0YDRLW
JOI5RnWb2PqoDCia+umAbjH/GXO+GFdyI28q3KihSvnufrPdzDe3/nG1Qh8Fy2Fde7HrrCC5S54i
lhJFkGh0z7rGk9bAVnQMRId7VkSxXGUMfKQ/puSlUji14qeA/KVWw7JjQmkqVfaeSmWYZ6BLYmvi
NsFBGrUhjWMCW9k4EHjPKrx/Wp8Z12Vy8uWQEeVYFcc4v4r4rcsgpbsM0vw2JQ02FMfnIhDD2CIz
LpEWi/EZZ9jn88m3Kc99Rgrg5ZL6Srk9/CgHRiHGyB72b+ru6MNaPcm8CcpYxICDJ8ACliVr7CMF
LwxYiNQJ+1T1aznvgDpVoW457Mly9Xi7XW83j/PPJ0cVNj+QOVM3/5sLdoVrEWVZd91OQJF3QXFC
OSJ9trCT1LO0+TOLFq/0cFjJYKVv1EorPhpLylbC2+av+wJQuD8XovOJUqGdYdLtEkU5NnpTWmKx
fsL+XkmFp6NiOPcZ+wSuTkpSRY3++UCF+7b9fL+cHTVJeiifbkLCxClDUsDWaVxhaDV5IjVLImjJ
ZHu290wx84C0iukEp/ah+eCPI97isSczwt8IFRTRSShMAYAzzWF1G3XShSSlTHV6jtOVVGhWoeJm
vqfiw2U7rEGRTnBrUSFABD8BigCxEiunkgmwR7VLwr5QAP+4ekG0kaeeolV2GxdP9cvy/m55W8Os
jFxjsZclISZEirQKDkzZEi4DFTwFEGdn29L2Zy4p05UT0NgjDuj79vpxvV0WvcXgmLCSg41gPKiL
ItJAHAKgscgpb+GmNmoQ5CunKSmoxK5XcHAeW3Nt7r73Op90EO9UR1gKY4sa9Ad4KS3WamPVoPKS
+qDDsClXb5ZJudSssv5sWPUbPj/efVnffdptj319G5pPOVTnogzeKew1jjl4QYOFkE8cr1vjPUvm
Wbr0YJkRyVEOKthxlZ6cKyeH/b8RDTR7tuHV6LIzui8oQTADGlvFeawUF9F4NL48qKLBuYaFNj2v
5e1uiZHjv7tYkm4q5k3OzBCjRUftdfqOmPC5jCVj5uensv+ec6xBb4kCN6sCNSA4ePGlATmgQL9u
RMu4esHSoz09IwN3V0u2l5VXcCYOSFfNH22nhRzcBl1JJZeSRSykjBaxMCO2lojREMckqAqSgfnD
/0344EK2lXQULMykrbCgDhlK8823H6v17bLPQgf1RIO2UWDZQj5jEyoPjjUkBMuD4I23Qo+g9PSn
LKlRrEbNwQ3yj9n9MWuB57QFE6J23ivs0tl0ILa2sZ7wVuAOcUkXp1Q5yWDxirNjZpYjgKD90JLQ
TePaqAjXIN8Fk5F4obE4upHa2mi1j/8KCOh54M+C6htTUZtuzCFG83j35/qud7p3UYtkwN5uKPHY
E0c0SoLiFxrYhegXtfBUY/3Z9WcbkDGvkTE/uXnzzQwTJW120mTA+UBTgxHigBFVMCZBy5CMqIj9
eKlV7VPV5Djl2A2DSwMyK5rQzakTuT0bTWmZpQr7QkcVwAhWjSVOgLZJJY/KRsatp/9uNKXPYfuM
8YNBBdfzeWVnzxdDAzOuH7409zfr7f0B9jxbC1lm0di2Mjp4sZogEFsfTkhUDgVt4ej2kccnYA4G
s48lNReDCi4W84p1uZgPQYBubjfzLwfLLLfhc5qpyGhD2oB9n32S6B1vCNjLTkXQu1lzFpioP+WA
pIrJuFgNsazQ9ofHslzk9gcHhOQeiHA0usXWGYFjYVP0AQ33liRrsD5Aat/S5zoiThYa90ecDC2Y
W1agM3N7g2EFwHa26NA+6a43gGPmIhc2UxpAt1KRJMPRQ844nODYkVWApWOxgC/GlzvB95SMOZS6
q5OSHV3jUR+l5/wIUdkl9IFSCDIzMGzpw0HN8pRqEuHIo5x7Ew0dEZwVqCME+Rsu7yg9cZ0ulg9f
tptvD730JdflTuK/KJBSYkyAHq98QEMedrll2pHYSOsTM94F97wYUF5of8dxwFgo6GTgpOShytih
KPI2Z6MdM5kOdTuytQzLrfGOwplABSWNdRGU8xb0JEx2tW31BvdnHJBiK6QshgXNf4uYfd0BX3QJ
8JE3kQoCegyqnCA9Gmz24GVDLSZWxCci5v+fItq/jbit/xYLlpjgpywxMSxd/HY722KD94MsxK0C
hpaQFLToaLArctQajv7EiWRWc9moQOVZ2K5y0gFZi1OyuKUHsv73FgxJcYxfdZ0wffCsNSaBSYx4
MtnPwECXYg1GMoDWhotB2Vh/ooIE7mok7Po3ou45m39eHjNpcMOp5BqesDIDXx3tM/S5ICC54J3S
TDaxfjb0pipIAGvslATBhxnd+2aMn9fTV27XhBEkSfbKRYFYPIhCAKdVQnsO+3TAg+OG+cCDeZFc
h30Pxl8vz/do/PWy5O802wF+nA3PvDfL+5vl/eZhn0GQS+tBV000cDBIOYJUUUSVAAvCa8cjzBqS
P58atJ+0TvD+aknuTY3c+cH3BRR/A2Pk/uP99qgk50w/2wYmBAHRmjED4T3xjhLHqXCJW8zsHjFv
BhOW5MxFhZxj5tf867eDWMzyUKcgHOyDmG1g2yTi4UMaCmqngs0pwhDJ6DBDufBC1RYeehf++13Y
Sat9KDW7JhuQDALsb9Yq7AqgFWkkM6DwMulBhQpUPSuX8zh7/Qkerw9on1doXw5F+F+X2/Z636as
i8sFrkUAcU1ajrKFYblKwHCVM41lhmmqzzuC85yjUdH2uqBT0sqpZ9VsNS/u8fcd0rjtugplQgVo
pcZjIQ0o0kSg8eixvw1Y0hxLWKV9ojDlhYCvvw9hxpGBmwpX9pAEgBBMpwe5gtsM7wpHnKiE6OmS
WK8ooQgtHoK1ycrq+3OYriTipnZrl0NYm/fLr6DW/rFe/nnM9e62sUNhH1yjOWK7eIr+ZCzI84Yh
JhfQBuZNUOpZSd6ny4x5YYbjSqZW9JQpuNkn1uguAI8ABPRCXaDTb/cNX04JWmeMoPw5BBB3iKsX
uSGqMYlHxsCof6LR6n7+Mctyd3lSkskqtJ/A+B6alcyWCDq7C4IWXQySaxvvMTiDsqV1mPjjLQHT
WtEgkkriX2ugUqz0RAuVYmzJ30yf8ocJMeWGywBQ4/XPPvmYQINE7GqwF0BthA0H2rlKoOV7yW18
ouVBf/46L/0Rk5LYipa44od4y+0/v85gC+3rOlDzAH0XTE4Q7ibAmYepiZbJQETgpjUefjQDfI3+
HP3FmTwNOcGPdtib4Oux8BFrDZGGxHjjpcKKcY3pw4jaxTUIcBldi+/tiGuqnLEkxi5rxKyOYCNf
N9+XfTdnVgGEtArFAtEBm6KjfwqeVyTWCJ2iTtj2tkrKcL6SGHf60jM1H0Ytfr/sI1UdXxeptYdN
Ywn16ONvPEWQw0haZ4yTHGSuflbyYn/+EUz6yypMlWO2omTDj4d6ofDH1fW728dP67t9OHhY69Va
DvoV6NuMR6wibSJpUkxECdEECkoOWFkvU+s1QkvJz6zyRHKpfBl4ydSEfs58rveTXYUIfME9E9s2
wstCfESPRwtvT8NBzw1gNkbnWq3MeYWjsspYGsbJwEnJgKtwxQ+m0NVsC/by0Zsu8/nIMDEOxLDA
vpQWHZs+RgLCS3guk+7a2vUEQDHLZJL+sYNtudos1qt9rsr149evwObPQF+Y3d4+TL/OFsvpzY/p
Zvt5eT/9dr/BNB84q7ez+0/LXHmz/bx+2F/4OfO1nT18+QiW58dv68XP065ws4t4f5zDf7fLn6e0
/+PDcpvzGne/lws/NT3996aHP3pcwR3I62H3n/XdsrYeF8yZf23NyR9XU2yH1b+/72HUb3e3P6a4
0/HKZjU9vA4/Tz9strPbX6QCjehqer98gJPjbvuLkOaCX70y5r9+mj78CXt9ufi4edx+BNoe7zJI
N6y4+IVReWGvXnHxXz9N/g524ezmdgmTIAGHqdmFeD39Ey5ul3e/YBQPxsOsx6U0riTKhX6hb15R
+KlY7IK/fuWAosl08j69vvztr9MP//MuTUc+f1y+//B783byy/EzNnR3eRJeT7HtHu61hy2m3tQG
M2v0Gxy6zhr7uc9h6EPu1tj9Hw8jY/NQTEK6g2H5QY19BLfd0N8vd0RkX2v9I99M4vrhG76SILfu
4EV6zLMPyZBgc1xNeufL2Q/M+pfr6V8uP0w/dS31gLv5ZjG8HYznWetDX3W5TcvFTzjUOo07cPfZ
X5rChp4tFvDnwxSYQAu0tyV+mrzJmRDTBn+Z/nY3H3secMOumrdvfwvn2WKGXuir/dBXs8XX9d1P
Z57Dm8n1hya8mb7+vXkfx6dVoMZcTa63sLemT3y4vBBX8Bp/zCQ0H/5vrvgcCzI1PDUJtPrUFxwo
OE01AimNj3dxDHEk4ABDSz1TkFJPX0d3VwJqTUEJMT7ex9PP29UFGMG4fQX0liXI1BDXiBACAWBk
DnFrqJ+ns78LfieYmgKjIBdcaiiAmla4VVoagMIVmg9zgW2xokr8yZuEYiPEP8TRh1DEgsbl3SFK
dRSAyaq0GCWRQxI3XKmBO7CQ4wIAUEsDBBQAAgAIAAN6RElQCXsWxAIAAEcGAAA1ABwAY29tcG9z
aXRpbmcvY29udGVudHMtc2NhbGUvc2NhbGVkLWFuY2VzdG9yLXN0ZGVyci50eHRVVAkAAyYq9Fcm
KvRXdXgLAAEE9QEAAAQUAAAAjVRbb9owFH7Pr/CkqQpVNeJcyEVVJRqgpaVlInQ8TJPl2GZYDXHk
mHb993MIJEHloU+Wc77L8efjDJNkvFhO589gMpzOxqMIfNuinL1nH8MsEwQrRo3+L5Httqzsj7DC
/fEq6a9Y+shVPxE7SVj/Ab/hhEheqFhI1t8wXPSfsHxl9FZLvP4gRWHaftgDEXgTnIKHJI6iDiCK
7nFOMxZFpRLFwZfnf00i8lLV8IlkbMb17qJnQACA9Q9aIUktQiywWk5iicuNYR8LQZg6gfV1o1OL
va32cVo5PwycrtyBK+QnqZ7hNjScek7YpSUFJp/de1H0HUErikTBZCVq9sxzXhe9ujXDax3CAOJP
qR5s1kKOMdk0/OuvdnJjfhXZZDVoWwoYtr5waMM/UjzLDUJSU+718JxiRa6xQQcLcdjFEpFljKjp
tsjM5vN8n6TmXu3DuWwWnitg6iB/O/6fnhG2sk6a0jOyK642YqeG+UfyzlhxxkHPo9WqkOPYnaic
p8EDzSF+OPBq2piy/C4eEsXfuPqIcZaluBpcKuJaqs4D2geuu3Y892B5nrcS8rViOMcmIWGUtU0u
+ZbpMVbVMuJ0wiUzEYoni10+E6IuH/PTMm4l46/X6wBDQm3mgj345Xk2n/9E0wTFw9ls+nyH5i9L
tJyjIVpOn8aL/efbYfyIJi/PcfXDQciAXleMrH0HdJxHYu9twEGLsl3Lc+gZVGlAvyMWBAMr6ML0
YsCgi/BTGoBuPSkY4WtODBjWUQUDx/YZAXKXL1mpzFLRKEIIRlGKS05QqaSe5GuywfIKtMVqj5TE
XJX72k23iJvHuC+Bm+YF2VbjajFCj67aIWHyjcmqS32PNmxhrmcDutsWC5ZTJpf6/2Xq+b4ClXSt
e6mvzLYbhgNdCkYnjCfM87Ms58gKU4ptsNU4w25vfz0YWB4J9dGwVMZ/UEsDBAoAAAAAABB6REkA
AAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcvZmlsdGVycy9VVAkAAz8q9FeHKvRXdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIABB6RElMfMdOkQAAAPoAAABRABwAY29tcG9zaXRpbmcvZmlsdGVycy9v
cGFjaXR5LWNoYW5nZS1vbi1maWx0ZXJlZC1wYWludHMtaW50by1hbmNlc3Rvci1jcmFzaC1sb2cu
dHh0VVQJAAM/KvRXPyr0V3V4CwABBPUBAAAEFAAAALXOvw6CMBCA8d2nuM0JS6vxD7M4EU0anYwh
pT2hCXLkrsTw9vISrt/y+0prb7aAi4s9BkgEjC7AWj0EWVQzxT40lFQVG3Y8q4paUefo2oEkRW9x
JE5LmT6jxSEg3xmxNrneZ/kp2+aZNua4MzV+RevDxrOTbl3As2QeCMwLrgQy+Q7eiw/EECKjT8Rz
8eeJ1Q9QSwMECgAAAAAABHpESQAAAAAAAAAAAAAAABUAHABjb21wb3NpdGluZy9nZW9tZXRyeS9V
VAkAAycq9FeHKvRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAPN5REl5iVUbkQAAAPoAAAA4ABwA
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvYm91bmRzLWlnbm9yZXMtaGlkZGVuLWNyYXNoLWxvZy50eHRV
VAkAAwkq9FcJKvRXdXgLAAEE9QEAAAQUAAAAtc69DoIwFEDh3ae4GxP2R4ORWZyIJo1OxpDSXqAJ
csltieHt5SVcz/Kdypi7KeFqw4geEgGj9ZCJZ0SOol3C6FtKog4tW15FTX0Ul2D7iWIKzuBMnLay
fGaDk0d+MGKjpSpyec4PMldaH2XR4Dcqddo7tnHISnhVzBOBfsONIC5ugG7zgRh8YHSJeC3/PLH7
AVBLAwQUAAIACADzeURJ0xATc8MCAABHBgAANQAcAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2JvdW5k
cy1pZ25vcmVzLWhpZGRlbi1zdGRlcnIudHh0VVQJAAMJKvRXCSr0V3V4CwABBPUBAAAEFAAAAI1U
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
rqd94Ou6jAmV2KreCXt8fEsuMT/0TV3GHGQDlkrwp9Xk8kHZ+vUspk9GXNnTEVf+tE23A003uMOE
pgeCS03NH9V00TfdfdPdN91909033X3T3TfdT9V0Qy2RBE22+a6qt3W5PYclqBVGRelPczWv/qMu
/ej9Xq0q79FohK33jEQc/OKGSeSgh9FcV7/XfYAHvUzVNtrs4JcyLGbEeVhNlmev449Kt67ubZxP
dWF/hM1fIRDyYJB0ku2+SP4SiagK9Us9RxOJ4z/FvO/WMffkcr+rmyF+IAWo3CS/Qmn+FMTdHOhP
UfU10oT/OtJE/izSRP9E0sSejDTxpyNN9tOSJtmTpp409aSpJ009aepJU0+aetLUk6aeNPWkqSdN
PWl6mDTp/yu2Z009a+pZU8+aetbUs6aeNfWsqWdNPWvqWVPPmnrW9CBrwj1r6llTz5p61tSzpp41
9aypZ009a+pZU8+aetbUs6YvsCbSs6aeNfWsqWdNPWvqWVPPmnrW1LOmnjX1rKlnTT1r+gJroj1r
6llTz5p61tSzpp419aypZ009a+pZU8+aetbUs6YvsCbW+tvv2m/uPJ9VxWtYVmeSWktV3v69/wL8
f9+AYf97v+i7MoRSBIEM3x2N6oNWgatUVkEpr77XhxM0oks6OwThEUrwxCEbZ0/q07vqM0ieJo74
0/35c/uJ//w5MtP1YamfoNrrA2nXvNvUJ4koc2AzK8lXz0aGaZbx51HH2aUwkDQHMMGTCUsYxF2Z
PnRHth3QQAVBXC+CVpLlzVs2HxhYbgeIXV/U31r7oimLUyVtTKo7Ogf0SaqlszvCU6U3SilbuKhK
bVopwegBWBjvDRBma0swuZcVZ1wJpGJZ3ULbAxhRNKkG2P4dsaMH+N4drLIEkmbT9dtTVc1yMt3B
hRFBOp+XpGtNQJZxWlzl0EuY/vm7+ghbbBthWRZldazt+lTb7a22calTw9nNLNmci4yZYRhePo/L
O/NkFl+p5cjYP63WtEDIZOdjPt85s3nw6tWrZ+YxF5R6AWMW8QmyaORHlitcYkU4cJHgvnQof/n1
E5w3uj9jlEyYjh9AsXMR1tt8DhvpF5XobHGplquL63y23l0DBGgi5Msoor5Fie1Z1GXCclzuW77w
3cDzOMPY6ULzkNQdXMkerhTZsvLOjoSbhT5guQmN+B4JaMgsz3aoRZkfWh4NqcUjRgGy7RMmHwGt
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
0KVg8oHxgHlxkuUcWQGj2AZbjTPs7vaz0cjySKiPhqUy/gNQSwMECgAAAAAAEHpESQAAAAAAAAAA
AAAAABIAHABjb21wb3NpdGluZy9tYXNrcy9VVAkAA0Aq9FeHKvRXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAAJ6RElHmupNkAAAAPoAAABBABwAY29tcG9zaXRpbmcvbWFza3MvY29tcG9zaXRpbmct
Y2xpcC1wYXRoLW1hc2stY2hhbmdlLWNyYXNoLWxvZy50eHRVVAkAAyQq9FckKvRXdXgLAAEE9QEA
AAQUAAAAtc6xDoIwEIDh3ae4zQlLK9HILE5Ek0YnY0hpT2iCHLkrMby9vITrv3x/Ze3NlnBxccAA
iYDRBdiqhyCLauc4hJaSqmPLjhdVUyfqHF03kqToLU7EaS3zZ7I4BuQ7IzYm14csP2X7PNPGFIVp
8CtaH3eenfTbEp4V80hgXnAlkNn38F59IIYQGX0iXso/T2x+UEsDBBQAAgAIABB6REndVrimkQAA
APoAAABBABwAY29tcG9zaXRpbmcvbWFza3MvcmVmZXJlbmNlLWNsaXAtcGF0aC1vbi1jb21wb3Np
dGVkLWNyYXNoLWxvZy50eHRVVAkAA0Aq9FdAKvRXdXgLAAEE9QEAAAQUAAAAtc69DoIwFEDh3ae4
GxP2x0SUWZyIJo1OxpDSXqAJcsltieHt5SVcz/Kdypi7KeFqw4geEgGj9ZCJZ0SOol3C6FtKog4t
W15FTX0Ul2D7iWIKzuBMnLayfGaDk0d+MGKjpTrm8pwfZK60PsmiwW9Uqtg7tnHISnhVzBOBfsON
IC5ugG7zgRh8YHSJeC3/PLH7AVBLAwQUAAIACAAQekRJj7zS08MCAABHBgAAPgAcAGNvbXBvc2l0
aW5nL21hc2tzL3JlZmVyZW5jZS1jbGlwLXBhdGgtb24tY29tcG9zaXRlZC1zdGRlcnIudHh0VVQJ
AANAKvRXQCr0V3V4CwABBPUBAAAEFAAAAI1UW2/aMBR+z6/wpKkKVTXihFxVVaIBWloKE6HjYZos
YzvDaogjx9D138/hkgSVhz5Zzvkux8ef00+S4Xwxnk3BqD+eDAcR+LZBOXvPPvpZJghWjBrdXyLb
bljZHWCFu8Nl0l2y1TNX3URsJWHdJ7zDCZG8ULGQrLtmuOi+YPnG6L2WePtBisK0/bADIrATnIKn
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
b7kk0EfDUhn/AVBLAwQKAAAAAAAQekRJAAAAAAAAAAAAAAAAFAAcAGNvbXBvc2l0aW5nL3JlZ2lv
bnMvVVQJAAM/KvRXhyr0V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAQekRJTHzHTpEAAAD6AAAA
QAAcAGNvbXBvc2l0aW5nL3JlZ2lvbnMvYWJzLXRyYW5zZm9ybWVkLWR5bmFtaWMtdXBkYXRlLWNy
YXNoLWxvZy50eHRVVAkAAz8q9Fc/KvRXdXgLAAEE9QEAAAQUAAAAtc6/DoIwEIDx3ae4zQlLq/EP
szgRTRqdjCGlPaEJcuSuxPD28hKu3/L7SmtvtoCLiz0GSASMLsBaPQRZVDPFPjSUVBUbdjyrilpR
5+jagSRFb3EkTkuZPqPFISDfGbE2ud5n+Snb5pk25rgzNX5F68PGs5NuXcCzZB4IzAuuBDL5Dt6L
D8QQIqNPxHPx54nVD1BLAwQKAAAAAAAQekRJAAAAAAAAAAAAAAAAEAAcAGNvbXBvc2l0aW5nL3J0
bC9VVAkAAz8q9FeHKvRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIABB6RElMfMdOkQAAAPoAAAAn
ABwAY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1jcmFzaC1sb2cudHh0VVQJAAM/KvRXPyr0V3V4
CwABBPUBAAAEFAAAALXOvw6CMBCA8d2nuM0JS6vxD7M4EU0anYwhpT2hCXLkrsTw9vISrt/y+0pr
b7aAi4s9BkgEjC7AWj0EWVQzxT40lFQVG3Y8q4paUefo2oEkRW9xJE5LmT6jxSEg3xmxNrneZ/kp
2+aZNua4MzV+RevDxrOTbl3As2QeCMwLrgQy+Q7eiw/EECKjT8Rz8eeJ1Q9QSwMEFAACAAgAEHpE
SVnq7RjGAgAARwYAACQAHABjb21wb3NpdGluZy9ydGwvcnRsLWZpeGVkLXN0ZGVyci50eHRVVAkA
Az8q9Fc/KvRXdXgLAAEE9QEAAAQUAAAAjVRbb9owFH7Pr/CkqQpVNeJcyEVVJRqgpaUwEToepsky
thlWQxw5hq7/fg6BJKg89Mmyz3c55/jY/SQZzhfj2RSM+uPJcBCBb1uUsff0o5+mgmDFqNH9JdLd
lhXdAVa4O1wm3SVbPXPVTcROEtZ9wnucEMlzFQvJuhuG8+4Llm+M3muJtx8kz03bDzsgAnvBKXhK
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
XfrW+5NbVTyh0QgbzxkJP/jBjVBIoP1o7sq/Kx7gAZcpaaPDDn4oI8aMiP1u0iw9jz8qTV3dhzib
6MH+jJi/IiDkwSDpON1+kPwlEVEO6jf6HC0kTv6S8L5b1dyL2/2uIkP2gRKgTJP8iqT5SxC3a6C/
xNXXRBP++0QT+atEE/0LRRN7MdFkv5xocl5WNMlONHWiqRNNnWjqRFMnmjrR1ImmTjR1oqkTTZ1o
6kTTftGk/2exnWrqVFOnmjrV1KmmTjV1qqlTTZ1q6lRTp5o61dSppr2qCXeqqVNNnWrqVFOnmjrV
1KmmTjV1qqlTTZ1q6lRTp5q+oJpIp5o61dSppk41daqpU02daupUU6eaOtXUqaZONXWq6QuqiXaq
qVNNnWrqVFOnmjrV1KmmTjV1qqlTTZ1q6lRTp5r2qyZkJqu3XH6CLq3fJLrSS6Z+A4Qyew6zRtny
aGCYZhF/HrS8dBIOjOoHME7HYzZisCGLZN8V6eaABsoJshUeC+0kzeqXrD9wYLE5QFZfkurAaF63
ZXPFFMblFa0H9CswC7F9JE1SrRAL2cBFVQJlr21htAcWxjsHCHN0JJg82UqxgxPixKK8hDYOMIEo
L9OF2e4VUugD9s4VQupIoNjrqd+8DtMsxpMtXBjypV9JVpC2NQFbxll+m8EMMP3Lm+rdo8IIiyIv
yteRrt5GurnSMa71/6f/xf10tH6fLWaGYXjZLC4ezdNpfKsWA2P3LaOmBUbGWx/z1da7dntv3749
Mk9sTqkXMGYRnyCLRn5kudwlVoQDF3Hbl4Lab77+5t21788YEihivXKWufUlLLf5CvbRL2qk28e1
Wiyv7rLpanP1EKCJkC+jiPoWJY5nUZdxS7i2b/ncdwPPsxnGog3NPqtbuMY7uASK0zI7Wxbu5/rF
uHVoxPdIQENmeY6gFmV+aHk0pJYdMQqQHZ8w+QxodcN1dILQZAedlDTR6Pa34J6D6Cu4CH71cV+8
AqAU+RxD1izoxASA4sDykCSWkCFBnIR+aAdtQJuW++Minir9AoTj1duBF8fu1jl1/CMR0x38icBs
PG6MEMjFz9myDbdwhcuoxBbisOwUSduSNAqt0A0cHCHkwo823JXFdrzVsTpOaFFqGyfGI0fq6mzi
3JdglyFsE+FaUjq2RWkECcZQrg4RCEvuetT39gDdn9nVwRpUzCneKQnMOR63pvRM3cbJYxteJ5I8
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
m6xvZ3XK8dxTnfo+rFBZ7l8BmWrG6HXY69AN2/C4jcENZ+NyPjmOeIOu5NWE6kVMfp01ZKmvtoZs
9XXXkAlr6PPxRP0CYxKJ40niC0+r9zX/RFGMiAE+nYkgdut4d6IU+XM1MeOerdczeBL7oRhP546l
IRNv3BaFzo6SYHV1WlYD5WNz6WoXY5u75UmgC5Z+C+Obk0TsWcH3wQIRROTH4j2wxu5b+U6Bl8y4
f8Kmrs/2y1PkewfNM2CNLmWQr3XZLGHycMrLfcn9zUYYJ+Y/Op7wwffWPzXCUFamCEm/N2mILRe6
6T/x/ZJn8yh/gW9Lx5WnsRbXD1nGa5Vueb7rBKw+6Cy//oPc1+v9KypG+F+d6u2A/xJ7NDDoYMvE
F3iXk/i/zN5/5OLUNNnXiGFtWjb/Lxgc8WAfSb+HDOabEJqKqbvL/O2Wl0ddNdlXk11uBIt3XSHn
LlIumDavDvhWp+hk+SBItqhubZFc+0f57nbzzfTaW4xU9m1koRP7qvPb2TgnMELYchaPooRLnXLD
zrmHChoUHt8NDccRB+qPP1/+dkYAKkI1dAM0vBsSwDccDu+OZucTUYZBEWZLgyKe16BvQfXYavF9
/yVeqk881nyR/pk7DxZETfDahqvFQVjZ16ONQNcIq4FZWLO/Q8lyPA3JF6J1pOuuwcuVsMHHl+QS
6dbaG88vEGwagKUQfJ8Hk52yxSvx4k3mVyKu9PWIq/66RbcFRTe4Q4WiByYXj9SfeTRri+626G6L
7rbobovutuhui+7XKrohl2hYC5bxrsi3Zbq9gCEoFY6StDy4Jf5HOmLrfaWWpys0AmHjOaM44SKN
RhNHUXehuS2+l3XAIdQy5TF2Kv1QBiOKrd1q/NA/Zd+4KF37dyyMRGJ/gc3PEAhbGiQJ/PUHyU+R
iCJRH4g+gkjs/yXm/VDNuVeX+0NZDOmSFKBwk/0MpflLEG/nQH+JqudIE/r7SBP+q0gT+QtJE301
0qS/HmkyXpc02S1paklTS5pa0tSSppY0taSpJU0taWpJU0uaWtLUkqbdpEn8n8hb1tSyppY1tayp
ZU0ta2pZU8uaWtbUsqaWNbWsqWVNO1kTallTy5pa1tSyppY1taypZU0ta2pZU8uaWtbUsqaWNT3B
mnDLmlrW1LKmljW1rKllTS1rallTy5pa1tSyppY1tazpCdZEWtbUsqaWNbWsqWVNLWtqWVPLmlrW
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
ga12AABhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLW5lZ2F0ZXMtbm8tdmlzaWJpbGl0eS1jcmFz
aC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAA3pESbdt1bnFAgAA
RwYAADoAGAAAAAAAAQAAAKSBlbQAAGFjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4tbmVnYXRlcy1u
by12aXNpYmlsaXR5LXN0ZGVyci50eHRVVAUAAyYq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAgekRJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHOtwAAYWNjZXNzaWJpbGl0eS9tYWMvVVQF
AANbKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANHpESQ7oqWJmPQAAghwBADwAGAAAAAAA
AQAAAKSBGrgAAGFjY2Vzc2liaWxpdHkvbWFjL2FyaWEtZXhwYW5kZWQtc3RhbmRhcmQtaXRlbXMt
Y3Jhc2gtbG9nLnR4dFVUBQADhCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPN5REkMrC/I
xAIAAEcGAAA5ABgAAAAAAAEAAACkgfb1AABhY2Nlc3NpYmlsaXR5L21hYy9hcmlhLWV4cGFuZGVk
LXN0YW5kYXJkLWl0ZW1zLXN0ZGVyci50eHRVVAUAAwkq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA0ekRJYupI8b48AABBGwEAMwAYAAAAAAABAAAApIEt+QAAYWNjZXNzaWJpbGl0eS9tYWMv
YXJpYS1ncm91cGluZy1yb2xlcy1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAAnpESSuzbh/DAgAARwYAADAAGAAAAAAAAQAAAKSBWDYBAGFjY2Vzc2liaWxp
dHkvbWFjL2FyaWEtZ3JvdXBpbmctcm9sZXMtc3RkZXJyLnR4dFVUBQADJCr0V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADR6RElDLt+bYz0AAAodAQBKABgAAAAAAAEAAACkgYU5AQBhY2Nlc3Np
YmlsaXR5L21hYy9hcmlhLWxpdmVyZWdpb25zLW5vdGlmaWNhdGlvbnMtYWx3YXlzLXNlbnQtY3Jh
c2gtbG9nLnR4dFVUBQADhCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABB6RElUkexyxAIA
AEcGAABHABgAAAAAAAEAAACkgWx3AQBhY2Nlc3NpYmlsaXR5L21hYy9hcmlhLWxpdmVyZWdpb25z
LW5vdGlmaWNhdGlvbnMtYWx3YXlzLXNlbnQtc3RkZXJyLnR4dFVUBQADPyr0V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADR6REkjZyw23DwAAJcbAQAuABgAAAAAAAEAAACkgbF6AQBhY2Nlc3Np
YmlsaXR5L21hYy9hcmlhLW11bHRpbGluZS1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAIHpESRTjJYbFAgAARwYAACsAGAAAAAAAAQAAAKSB9bcBAGFjY2Vz
c2liaWxpdHkvbWFjL2FyaWEtbXVsdGlsaW5lLXN0ZGVyci50eHRVVAUAA1sq9Fd1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADyeURJAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UEfuwEAYWNjZXNz
aWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvVVQFAAMIKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgANHpESTTnE4nDPAAAQRsBADkAGAAAAAAAAQAAAKSBd7sBAGFjY2Vzc2liaWxpdHkvbWFjL3Nl
bGVjdC10ZXh0L3NlbGVjdC10ZXh0LTgtY3Jhc2gtbG9nLnR4dFVUBQADhCr0V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAPJ5REnnOcPKxAIAAEcGAAA2ABgAAAAAAAEAAACkga34AQBhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC04LXN0ZGVyci50eHRVVAUAAwgq9Fd1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAgekRJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UHh
+wEAY29tcG9zaXRpbmcvVVQFAANbKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANHpESSIo
YOCTPAAAAxoBAEwAGAAAAAAAAQAAAKSBJ/wBAGNvbXBvc2l0aW5nL2FuY2VzdG9yLWNvbXBvc2l0
aW5nLWxheWVyLWlzLW9uLXN1YnBpeGVsLXBvc2l0aW9uLWNyYXNoLWxvZy50eHRVVAUAA4Qq9Fd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADzeURJ91s8AMMCAABHBgAASQAYAAAAAAABAAAApIFA
OQIAY29tcG9zaXRpbmcvYW5jZXN0b3ItY29tcG9zaXRpbmctbGF5ZXItaXMtb24tc3VicGl4ZWwt
cG9zaXRpb24tc3RkZXJyLnR4dFVUBQADCSr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABB6
REkAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQYY8AgBjb21wb3NpdGluZy9hbmltYXRpb24vVVQF
AAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEHpESVtl0GOQAAAA+gAAAD8AGAAAAAAA
AQAAAKSB1jwCAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9sYXllci1mb3ItZmlsbGluZy1hbmltYXRp
b24tY3Jhc2gtbG9nLnR4dFVUBQADPyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABB6REnC
qmBCxQIAAEcGAAA8ABgAAAAAAAEAAACkgd89AgBjb21wb3NpdGluZy9hbmltYXRpb24vbGF5ZXIt
Zm9yLWZpbGxpbmctYW5pbWF0aW9uLXN0ZGVyci50eHRVVAUAAz8q9Fd1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAACekRJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEaQQIAY29tcG9zaXRpbmcv
YmFja2luZy9VVAUAAyQq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAACekRJR5rqTZAAAAD6
AAAAPQAYAAAAAAABAAAApIFoQQIAY29tcG9zaXRpbmcvYmFja2luZy9uby1iYWNraW5nLWZvci1j
bGlwLW92ZXJsYXAtY3Jhc2gtbG9nLnR4dFVUBQADJCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAAJ6REmAk1V/xQIAAEcGAAA6ABgAAAAAAAEAAACkgW9CAgBjb21wb3NpdGluZy9iYWNraW5n
L25vLWJhY2tpbmctZm9yLWNsaXAtb3ZlcmxhcC1zdGRlcnIudHh0VVQFAAMkKvRXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAIHpESdJGq+SRAAAA+gAAACUAGAAAAAAAAQAAAKSBqEUCAGNvbXBv
c2l0aW5nL2NsaXAtY2hhbmdlLWNyYXNoLWxvZy50eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAgekRJroiiJcoCAABHBgAAIgAYAAAAAAABAAAApIGYRgIAY29tcG9zaXRpbmcv
Y2xpcC1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADWyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AAN6REkAAAAAAAAAAAAAAAAbABgAAAAAAAAAEADtQb5JAgBjb21wb3NpdGluZy9jb250ZW50cy1z
Y2FsZS9VVAUAAyYq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA0ekRJu1RjCkhBAABoKgEA
MgAYAAAAAAABAAAApIETSgIAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvYW5pbWF0aW5nLWNy
YXNoLWxvZy50eHRVVAUAA4Qq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADzeURJVzd5GcYC
AABHBgAALwAYAAAAAAABAAAApIHHiwIAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvYW5pbWF0
aW5nLXN0ZGVyci50eHRVVAUAAwkq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA0ekRJ0Igx
2Wg9AADuJwEAOAAYAAAAAAABAAAApIH2jgIAY29tcG9zaXRpbmcvY29udGVudHMtc2NhbGUvc2Nh
bGVkLWFuY2VzdG9yLWNyYXNoLWxvZy50eHRVVAUAA4Qq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAADekRJUAl7FsQCAABHBgAANQAYAAAAAAABAAAApIHQzAIAY29tcG9zaXRpbmcvY29udGVu
dHMtc2NhbGUvc2NhbGVkLWFuY2VzdG9yLXN0ZGVyci50eHRVVAUAAyYq9Fd1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAQekRJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UED0AIAY29tcG9zaXRp
bmcvZmlsdGVycy9VVAUAAz8q9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQekRJTHzHTpEA
AAD6AAAAUQAYAAAAAAABAAAApIFR0AIAY29tcG9zaXRpbmcvZmlsdGVycy9vcGFjaXR5LWNoYW5n
ZS1vbi1maWx0ZXJlZC1wYWludHMtaW50by1hbmNlc3Rvci1jcmFzaC1sb2cudHh0VVQFAAM/KvRX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAABHpESQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B
bdECAGNvbXBvc2l0aW5nL2dlb21ldHJ5L1VUBQADJyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAPN5REl5iVUbkQAAAPoAAAA4ABgAAAAAAAEAAACkgbzRAgBjb21wb3NpdGluZy9nZW9tZXRy
eS9ib3VuZHMtaWdub3Jlcy1oaWRkZW4tY3Jhc2gtbG9nLnR4dFVUBQADCSr0V3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAPN5REnTEBNzwwIAAEcGAAA1ABgAAAAAAAEAAACkgb/SAgBjb21wb3Np
dGluZy9nZW9tZXRyeS9ib3VuZHMtaWdub3Jlcy1oaWRkZW4tc3RkZXJyLnR4dFVUBQADCSr0V3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADR6REmV9qoTbEQAAI9LAQA0ABgAAAAAAAEAAACkgfHV
AgBjb21wb3NpdGluZy9nZW9tZXRyeS9jc3MtY2xpcC1vdmVyc2l6ZS1jcmFzaC1sb2cudHh0VVQF
AAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABHpESSVKj0TCAgAARwYAADEAGAAAAAAA
AQAAAKSByxoDAGNvbXBvc2l0aW5nL2dlb21ldHJ5L2Nzcy1jbGlwLW92ZXJzaXplLXN0ZGVyci50
eHRVVAUAAycq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAgekRJAAAAAAAAAAAAAAAAFAAY
AAAAAAAAABAA7UH4HQMAY29tcG9zaXRpbmcvaWZyYW1lcy9VVAUAA1sq9Fd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAACekRJR5rqTZAAAAD6AAAAPAAYAAAAAAABAAAApIFGHgMAY29tcG9zaXRp
bmcvaWZyYW1lcy9jb25uZWN0LWNvbXBvc2l0aW5nLWlmcmFtZS1jcmFzaC1sb2cudHh0VVQFAAMk
KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAAnpESdc0n+/HAgAARwYAADkAGAAAAAAAAQAA
AKSBTB8DAGNvbXBvc2l0aW5nL2lmcmFtZXMvY29ubmVjdC1jb21wb3NpdGluZy1pZnJhbWUtc3Rk
ZXJyLnR4dFVUBQADJCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADR6REnQb3ArkDwAANgZ
AQA3ABgAAAAAAAEAAACkgYYiAwBjb21wb3NpdGluZy9pZnJhbWVzL2lmcmFtZS1jb3B5LW9uLXNj
cm9sbC1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAD3pE
SQuGzTPEAgAARwYAADQAGAAAAAAAAQAAAKSBh18DAGNvbXBvc2l0aW5nL2lmcmFtZXMvaWZyYW1l
LWNvcHktb24tc2Nyb2xsLXN0ZGVyci50eHRVVAUAAz4q9Fd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA0ekRJgsxQqwU9AAB2HAEAPgAYAAAAAAABAAAApIG5YgMAY29tcG9zaXRpbmcvaWZyYW1l
cy9pbnZpc2libGUtbmVzdGVkLWlmcmFtZS1oaWRlLWNyYXNoLWxvZy50eHRVVAUAA4Qq9Fd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAgekRJ2qIey8QCAABHBgAAOwAYAAAAAAABAAAApIE2oAMA
Y29tcG9zaXRpbmcvaWZyYW1lcy9pbnZpc2libGUtbmVzdGVkLWlmcmFtZS1oaWRlLXN0ZGVyci50
eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAACekRJAAAAAAAAAAAAAAAAEwAY
AAAAAAAAABAA7UFvowMAY29tcG9zaXRpbmcvaW1hZ2VzL1VUBQADJCr0V3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAAJ6RElHmupNkAAAAPoAAAA+ABgAAAAAAAEAAACkgbyjAwBjb21wb3NpdGlu
Zy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQtY29sb3ItY3Jhc2gtbG9nLnR4dFVUBQAD
JCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAJ6REnDTKwfxQIAAEcGAAA7ABgAAAAAAAEA
AACkgcSkAwBjb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQtY29sb3It
c3RkZXJyLnR4dFVUBQADJCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAN6REkAAAAAAAAA
AAAAAAAbABgAAAAAAAAAEADtQf6nAwBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9VVAUAAyYq
9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADekRJOi0/3ZAAAAD6AAAARQAYAAAAAAABAAAA
pIFTqAMAY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tYW5kLXRyYW5z
Zm9ybS1jcmFzaC1sb2cudHh0VVQFAAMmKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAA3pE
SSLLlePFAgAARwYAAEIAGAAAAAAAAQAAAKSBYqkDAGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLWFuZC10cmFuc2Zvcm0tc3RkZXJyLnR4dFVUBQADJir0V3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAABB6REkAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQaOsAwBjb21w
b3NpdGluZy9tYXNrcy9VVAUAA0Aq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAACekRJR5rq
TZAAAAD6AAAAQQAYAAAAAAABAAAApIHvrAMAY29tcG9zaXRpbmcvbWFza3MvY29tcG9zaXRpbmct
Y2xpcC1wYXRoLW1hc2stY2hhbmdlLWNyYXNoLWxvZy50eHRVVAUAAyQq9Fd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAQekRJ3Va4ppEAAAD6AAAAQQAYAAAAAAABAAAApIH6rQMAY29tcG9zaXRp
bmcvbWFza3MvcmVmZXJlbmNlLWNsaXAtcGF0aC1vbi1jb21wb3NpdGVkLWNyYXNoLWxvZy50eHRV
VAUAA0Aq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQekRJj7zS08MCAABHBgAAPgAYAAAA
AAABAAAApIEGrwMAY29tcG9zaXRpbmcvbWFza3MvcmVmZXJlbmNlLWNsaXAtcGF0aC1vbi1jb21w
b3NpdGVkLXN0ZGVyci50eHRVVAUAA0Aq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAgekRJ
AAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UFBsgMAY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvVVQF
AANbKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEHpESUx8x06RAAAA+gAAAEoAGAAAAAAA
AQAAAKSBk7IDAGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5nLWNoYW5nZS1pbnNp
ZGUtcmVmbGVjdGlvbi1jcmFzaC1sb2cudHh0VVQFAAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAEHpESd1BHDTFAgAARwYAAEcAGAAAAAAAAQAAAKSBqLMDAGNvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL2NvbXBvc2l0aW5nLWNoYW5nZS1pbnNpZGUtcmVmbGVjdGlvbi1zdGRlcnIudHh0VVQF
AAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIHpESR66hqu2PAAA/hoBAEAAGAAAAAAA
AQAAAKSB7rYDAGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLWFuaW1h
dGVkLWNyYXNoLWxvZy50eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgekRJ
9x+FR8UCAABHBgAAPQAYAAAAAAABAAAApIEe9AMAY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVz
dGVkLXJlZmxlY3Rpb24tYW5pbWF0ZWQtc3RkZXJyLnR4dFVUBQADWyr0V3V4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAABB6REkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQVr3AwBjb21wb3NpdGlu
Zy9yZWdpb25zL1VUBQADPyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABB6RElMfMdOkQAA
APoAAABAABgAAAAAAAEAAACkgaj3AwBjb21wb3NpdGluZy9yZWdpb25zL2Ficy10cmFuc2Zvcm1l
ZC1keW5hbWljLXVwZGF0ZS1jcmFzaC1sb2cudHh0VVQFAAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAEHpESQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1Bs/gDAGNvbXBvc2l0aW5nL3J0
bC9VVAUAAz8q9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQekRJTHzHTpEAAAD6AAAAJwAY
AAAAAAABAAAApIH9+AMAY29tcG9zaXRpbmcvcnRsL3J0bC1maXhlZC1jcmFzaC1sb2cudHh0VVQF
AAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEHpESVnq7RjGAgAARwYAACQAGAAAAAAA
AQAAAKSB7/kDAGNvbXBvc2l0aW5nL3J0bC9ydGwtZml4ZWQtc3RkZXJyLnR4dFVUBQADPyr0V3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAJ6REkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQRP9
AwBjb21wb3NpdGluZy9zY2FsaW5nL1VUBQADJCr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ADR6RElUynWFuzwAAJ4aAQA3ABgAAAAAAAEAAACkgWH9AwBjb21wb3NpdGluZy9zY2FsaW5nL3Rp
bGVkLWxheWVyLXJlY3Vyc2lvbi1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAAnpESbnxD+7BAgAARwYAADQAGAAAAAAAAQAAAKSBjToEAGNvbXBvc2l0aW5n
L3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLXN0ZGVyci50eHRVVAUAAyQq9Fd1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAgekRJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UG8PQQAY29t
cG9zaXRpbmcvdGlsaW5nL1VUBQADWyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADR6REl1
wKsnXj0AADwoAQAxABgAAAAAAAEAAACkgQk+BABjb21wb3NpdGluZy90aWxpbmcvY3Jhc2gtaHVn
ZS1sYXllci1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
EHpESS2vYd7DAgAARwYAAC4AGAAAAAAAAQAAAKSB0nsEAGNvbXBvc2l0aW5nL3RpbGluZy9jcmFz
aC1odWdlLWxheWVyLXN0ZGVyci50eHRVVAUAAz8q9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAgekRJUV1nvZAAAAD6AAAALwAYAAAAAAABAAAApIH9fgQAY29tcG9zaXRpbmcvdGlsaW5nL2h1
Z2UtbGF5ZXItaW1nLWNyYXNoLWxvZy50eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAgekRJyRdWLq8DAACgCgAALAAYAAAAAAABAAAApIH2fwQAY29tcG9zaXRpbmcvdGlsaW5n
L2h1Z2UtbGF5ZXItaW1nLXN0ZGVyci50eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAQekRJAAAAAAAAAAAAAAAAGAAYAAAAAAAAABAA7UELhAQAY29tcG9zaXRpbmcvdHJhbnNp
dGlvbnMvVVQFAAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANHpESS3Tc+HoPQAAbSoB
AD4AGAAAAAAAAQAAAKSBXYQEAGNvbXBvc2l0aW5nL3RyYW5zaXRpb25zL3RyYW5zZm9ybS1vbi1s
YXJnZS1sYXllci1jcmFzaC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAEHpESQAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1BvcIEAGNvbXBvc2l0aW5nL3Zpc2liaWxp
dHkvVVQFAAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgANHpESfFmIrGqPAAALhoBADIA
GAAAAAAAAQAAAKSBDsMEAGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvaGlkZGVuLWlmcmFtZS1jcmFz
aC1sb2cudHh0VVQFAAOEKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEHpEScaha1vEAgAA
RwYAAC8AGAAAAAAAAQAAAKSBJAAFAGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvaGlkZGVuLWlmcmFt
ZS1zdGRlcnIudHh0VVQFAAM/KvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAIHpESQAAAAAA
AAAAAAAAABEAGAAAAAAAAAAQAO1BUQMFAGNvbnRlbnRmaWx0ZXJpbmcvVVQFAANbKvRXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAIHpESVFdZ72QAAAA+gAAACoAGAAAAAAAAQAAAKSBnAMFAGNv
bnRlbnRmaWx0ZXJpbmcvYWxsb3ctbmV2ZXItY3Jhc2gtbG9nLnR4dFVUBQADWyr0V3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACB6REniq8xgwgIAAEcGAAAnABgAAAAAAAEAAACkgZAEBQBjb250
ZW50ZmlsdGVyaW5nL2FsbG93LW5ldmVyLXN0ZGVyci50eHRVVAUAA1sq9Fd1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAgekRJAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGzBwUAY3J5cHRvL1VU
BQADWyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACB6REkAAAAAAAAAAAAAAAAOABgAAAAA
AAAAEADtQfQHBQBjcnlwdG8vc3VidGxlL1VUBQADWyr0V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACB6RElRXWe9kAAAAPoAAAA3ABgAAAAAAAEAAACkgTwIBQBjcnlwdG8vc3VidGxlL2Flcy1j
YmMtMTkyLWVuY3J5cHQtZGVjcnlwdC1jcmFzaC1sb2cudHh0VVQFAANbKvRXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAIHpESUe/6dnFAgAARwYAADQAGAAAAAAAAQAAAKSBPQkFAGNyeXB0by9z
dWJ0bGUvYWVzLWNiYy0xOTItZW5jcnlwdC1kZWNyeXB0LXN0ZGVyci50eHRVVAUAA1sq9Fd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAAgekRJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFwDAUA
Y3J5cHRvL3dlYmtpdFN1YnRsZS9VVAUAA1sq9Fd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAR
ekRJ/HogBtMBAABCBAAAMwAYAAAAAAABAAAApIG+DAUAY3J5cHRvL3dlYmtpdFN1YnRsZS9kaXNh
bGxvd2VkLWluLXdvcmtlci1zdGRlcnIudHh0VVQFAANBKvRXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAIHpESVFdZ72QAAAA+gAAACYAGAAAAAAAAQAAAKSB/g4FAGNyeXB0by93ZWJraXRTdWJ0
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290875</attachid>
            <date>2016-10-06 17:31:57 -0700</date>
            <delta_ts>2016-10-06 18:11:25 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>61322</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBA
QAorMjAxNi0xMC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hcmtlZEJsb2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFy
a2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBJdCB1c2VkIHRvIGJlIHRoYXQgd2Ugd291bGQgZm9yZ2V0IHdoaWNoIG9iamVjdHMgYXJl
IGxpdmUgdGhlIG1vbWVudCB3ZSBzdGFydGVkIGNvbGxlY3Rpb24uCisgICAgICAgIFRoYXQncyBi
ZWNhdXNlIHRoZSBmbGlwIGF0IHRoZSBiZWdpbm5pbmcgY2xlYXJzIGFsbCBtYXJrIGJpdHMuCisg
ICAgICAgIAorICAgICAgICBCdXQgd2UgYWxyZWFkeSBoYXZlIGEgZmFjaWxpdHkgZm9yIHRyYWNr
aW5nIG9iamVjdHMgdGhhdCBhcmUgbGl2ZS1idXQtbm90LW1hcmtlZC4gSXQncyBjYWxsZWQKKyAg
ICAgICAgbmV3bHlBbGxvY2F0ZWQuIFNvLCBpbnN0ZWFkIG9mIGNsZWFyaW5nIG1hcmsgYml0cywg
d2Ugd2FudCB0byBqdXN0IHRyYW5zZmVyIHRoZW0gdG8KKyAgICAgICAgbmV3bHlBbGxvY2F0ZWQu
IFRoZW4gd2Ugd2FudCB0byBjbGVhciBhbGwgbmV3bHlBbGxvY2F0ZWQgYWZ0ZXIgR0MuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGltcGxlbWVudHMgc3VjaCBhbiBhcHByb2FjaCwgYWxvbmcgd2l0
aCBzb21lIG9idmlvdXMgb3B0aW1pemF0aW9uczoKKyAgICAgICAgCisgICAgICAgIC0gV2UgZG9u
J3QgcmVhbGx5IGNsZWFyIGFsbCBuZXdseUFsbG9jdGVkIGFmdGVyIEdDLiBXZSBqdXN0IHZlcnNp
b24gdGhlbSwgbGlrZSB3ZSB2ZXJzaW9uCisgICAgICAgICAgbWFyayBiaXRzLgorICAgICAgICAK
KyAgICAgICAgLSBJZiBhbGwgY2VsbHMgaW4gYSBibG9jayBhcmUgbGl2ZSwgd2Ugc2V0IHRoZSBh
bGxvY2F0ZWQgYml0IGZvciB0aGF0IGJsb2NrIGluc3RlYWQgb2YKKyAgICAgICAgICBjcmVhdGlu
ZyBuZXdseUFsbG9jYXRlZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgbGVhZHMgdG8gc29tZSBp
bnRlcmVzdGluZyBhbGdvcml0aG1zLiBBbnkgYWxnb3JpdGhtIHRoYXQgcmVhc29ucyBhYm91dCBs
aXZlbmVzcyBuZWVkcyB0bworICAgICAgICBjb25zaWRlciBzb21lIHdpbGQgYXJyYW5nZW1lbnRz
IG9mIHZlcnNpb25zOgorICAgICAgICAKKyAgICAgICAgLSBJZiBtYXJrcyBhcmUgY3VycmVudCwg
eW91IGNhbiBqdXN0IHVzZSB0aGUgbWFya3MgZGlyZWN0bHkuCisgICAgICAgIAorICAgICAgICAt
IElmIHRoZSBtYXJrcyBhcmUgZXhhY3RseSBvbmUgdmVyc2lvbiBvbGQgYW5kIHdlJ3JlIG1hcmtp
bmcsIHRoZW4gaXQgbWVhbnMgdGhhdCB3ZSBsb2dpY2FsbHkKKyAgICAgICAgICBzaG91bGQgaGF2
ZSBtZXJnZWQgbWFya3MgaW50byBuZXdseUFsbG9jYXRlZCwgc28gbWFya3MgaXMgb3VyIGN1cnJl
bnQgdmlldyBvZgorICAgICAgICAgIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICAKKyAgICAgICAg
LSBJZiBuZXdseUFsbG9jYXRlZCBhcmUgY3VycmVudCwgd2UgY2FuIHVzZSB0aGVtLCBidXQgaWYg
dGhleSBhcmUgbm90LCB0aGVuIHdlIHNob3VsZCBpZ25vcmUKKyAgICAgICAgICB0aGVtLgorICAg
ICAgICAKKyAgICAgICAgU2VlIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coKSBmb3IgdGhl
IGZ1bGwgYXJyYW5nZW1lbnQgb2YgY2FzZXMgd2UgaGF2ZSB0byBoYW5kbGUuCisgICAgICAgIAor
ICAgICAgICBUbyB2YWxpZGF0ZSB0aGlzIGNoYW5nZSwgd2Ugbm93IHJ1biB0aGUgY29uc2VydmF0
aXZlIHNjYW4gYWZ0ZXIgdGhlIGJlZ2luTWFya2luZyBmbGlwLiBBbmQgaXQKKyAgICAgICAgdG90
YWxseSB3b3JrcyEKKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBodWdlIHN0ZXAgdG93YXJk
cyBjb25jdXJyZW50IEdDLiBJdCBtZWFucyB0aGF0IHdlIG91Z2h0IHRvIGJlIGFibGUgdG8gcnVu
IHRoZQorICAgICAgICBhbGxvY2F0b3Igd2hpbGUgbWFya2luZy4gU2luY2Ugd2UgYWxyZWFkeSBz
ZXBhcmF0ZWx5IG1hZGUgaXQgcG9zc2libGUgdG8gcnVuIHRoZSBiYXJyaWVyCisgICAgICAgIHdo
aWxlIG1hcmtpbmcsIHRoaXMgbWVhbnMgdGhhdCB3ZSdyZSBwcmV0dHkgbXVjaCByZWFkeSBmb3Ig
c29tZSBzZXJpb3VzIGNvbmN1cnJlbmN5IGFjdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
aXMgc2hvd2luZyBhIDAuOCUgTG9uZ1NwaWRlciByZWdyZXNzaW9uIGJ1dCBuZXV0cmFsIG9uIGV2
ZXJ5dGhpbmcgZWxzZSAoYWN0dWFsbHksIEkgc2VlCisgICAgICAgIG1heWJlLWZhc3RlciByZXN1
bHRzIG9uIFN1blNwaWRlci9PY3RhbmUvS3Jha2VuKS4gVGhpcyBpcyBhIDAuOCUgUExUMyByZWdy
ZXNzaW9uIHdpdGggOTklCisgICAgICAgIGNvbmZpZGVuY2UsIGJ1dCBteSBQTFQgcmVzdWx0cyBh
cmUgYmVpbmcgdmVyeSB3ZWlyZCBhbmQgSSB3aWxsIHJldmlzaXQgdGhpcy4gVGhpcyBpcyBhIDAu
MSUKKyAgICAgICAgSmV0U3RyZWFtIHJlZ3Jlc3Npb24gd2l0aCA4MSUgY29uZmlkZW5jZS4gVGhl
IG9ubHkgaW5kaXZpZHVhbCBiZW5jaG1hcmtzIHdpdGggaGlnaC1jb25maWRlbmNlCisgICAgICAg
IGRpZmZlcmVuY2VzIGFyZSB0eXBlc2NyaXB0LCB3aGljaCByZWdyZXNzZXMgMi43JSB3aXRoIDk5
JSBjb25maWRlbmNlIGFuZCBjcnlwdG8sIHdoaWNoCisgICAgICAgIHJlZ3Jlc3NlcyAwLjclIHdp
dGggOTclIGNvbmZpZGVuY2UuIFRoaXMgaXMgYSAxJS4yIHJlZ3Jlc3Npb24gb24gbWVtYnVzdGVy
IHdpdGggOTIlCisgICAgICAgIGNvbmZpZGVuY2UuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9ja1NldDo6bWFyayk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4
ZWN1dGluZyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6Y2xlYXJDdXJyZW50bHlFeGVj
dXRpbmcpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRs
eUV4ZWN1dGluZ0NvZGVCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQ29kZUJsb2Nr
U2V0Lmg6CisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2tTZXQ6Om1hcmspOgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0
aXZlUm9vdHMuY3BwOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6Okhl
YXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVC
YXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcyk6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgICogaGVhcC9IZWFwVXRpbC5oOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6
ZmluZEdDT2JqZWN0UG9pbnRlcnNGb3JNYXJraW5nKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFs
bG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dCk6
CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OkhhbmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnN3ZWVwSGVscGVyU2VsZWN0SGFzTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjphYm91dFRvTWFya1Nsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpyZXNldEFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpyZXNldE1hcmtz
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNldE5lZWRzRGVzdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6Y2xlYXJNYXJrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxs
b2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmlzTmV3bHlBbGxvY2F0ZWRTdGFsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6aGVhcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzcGFj
ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwYWNlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya2luZ1ZlcnNpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVn
aW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6
bmV4dFZlcnNpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVkVmVyc2lv
bik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjptYXJraW5nVmVyc2lvbik6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKwogMjAxNi0xMC0wMyAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGluZyBw
Y1RvT3JpZ2luTWFwIGluIEZUTCBzaG91bGRuJ3QgaW5zZXJ0IHVubmVjZXNzYXJ5IE5PUHMKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDQ1LDYgKzQ0NSw3IEBACiAJCTBGNjRCMjc5MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjY0QjI3NzFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwICov
OyB9OwogCQkwRjY0QjI3QTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRCMjc4MUE3OTU3QjIwMDZF
NEU2NiAvKiBDYWxsRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0RUFGMjFD
NEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovOyB9OworCQkwRjY2NENFODFEQTMw
NEVGMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjRDRTcxREEzMDRFRDAwQjAwQTExIC8qIENv
ZGVCbG9ja1NldElubGluZXMuaCAqLzsgfTsKIAkJMEY2NjZFQzAxODM1NjZGOTAwRDAxN0YxIC8q
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzExODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxC
eXRlY29kZUxpdmVuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2
NkVDNjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjY2RUMyMTgzNTY3MkIwMEQwMTdG
MSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICovOyB9OwpAQCAtMjY5Nyw2ICsyNjk4LDcgQEAKIAkJ
MEY2NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxFZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxFZGdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNjRFQUYyMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckFyZ0lubGluZXMuaDsgcGF0aCA9IGIz
L2Fpci9BaXJBcmdJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjY0
Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVCbG9ja1NldElubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpc0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjY2NkVCRjE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQzIxODM1NjcyQjAwRDAxN0Yx
IC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdBdmFpbGFiaWxpdHkuY3BwOyBwYXRoID0gZGZnL0RGR0F2YWlsYWJpbGl0eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzAzLDYgKzUzMDUsNyBAQAogCQkJCTBG
MUMzREQ5MUJCQ0UwOUUwMEU1MjNFNCAvKiBDZWxsU3RhdGUuaCAqLywKIAkJCQkwRkQ4QTMxMTE3
RDQzMjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmNwcCAqLywKIAkJCQkwRkQ4QTMxMjE3RDQz
MjZDMDBDQTJDNDAgLyogQ29kZUJsb2NrU2V0LmggKi8sCisJCQkJMEY2NjRDRTcxREEzMDRFRDAw
QjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLywKIAkJCQkxNDZCMTREQjEyRUI1QjEy
MDAxQkVDMUIgLyogQ29uc2VydmF0aXZlUm9vdHMuY3BwICovLAogCQkJCTE0OURBQUYyMTJFQjU1
OUQwMDgzQjEyQiAvKiBDb25zZXJ2YXRpdmVSb290cy5oICovLAogCQkJCTJBN0E1OEVFMTgwOEE0
QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLywKQEAgLTc5MTcsNiArNzkyMCw3IEBACiAJCQkJ
QkMxOEM0MUMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTY1N0NGNDU5MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTkxODgwRDZBODAwMjZDMzlCIC8qIEpTQ0J1aWx0
aW5zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjY2NENFODFEQTMwNEVGMDBCMDBBMTEgLyogQ29k
ZUJsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY3REEwRTE5QkNDOTAw
ODA2NkREIC8qIEpTQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NzQ5NzExNjg3QURFNDAw
QTRGRjZBIC8qIEpTQ2VsbElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMUREODRBMThB
OTQ1QkUwMDI2RjNGQSAvKiBKU0NJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMDY3
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdDYXBh
YmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdEcml2ZXIu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkNhbGxMaW5r
SW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb2RlVHlwZS5oIgogI2luY2x1ZGUgIkNv
bXBhY3RKSVRDb2RlTWFwLmgiCkBAIC03Niw2ICs3NSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOworY2xhc3MgQ29kZUJsb2NrU2V0OwogY2xh
c3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKQEAgLTEzMTEsMzggKzEzMTEsNiBAQCBpbmxpbmUgdm9pZCBDb2RlQmxv
Y2s6OmNsZWFyVmlzaXRXZWFrbHlICiAgICAgbV92aXNpdFdlYWtseUhhc0JlZW5DYWxsZWQuc3Rv
cmUoZmFsc2UsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwogfQogCi1pbmxpbmUgdm9pZCBD
b2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5kaWRh
dGVDb2RlQmxvY2spCi17Ci0gICAgQVNTRVJUKG1fbG9jay5pc0xvY2tlZCgpKTsKLSAgICAvLyBX
ZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFuZCAtMSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5IHRo
ZSBIYXNoTWFwIGFzIG1hcmtlcnMuCi0gICAgdWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0ZUNvZGVCbG9jayk7Ci0gICAgCi0gICAgLy8gVGhpcyBj
aGVja3MgZm9yIGJvdGggb2YgdGhvc2UgbmFzdHkgY2FzZXMgaW4gb25lIGdvLgotICAgIC8vIDAg
KyAxID0gMQotICAgIC8vIC0xICsgMSA9IDAKLSAgICBpZiAodmFsdWUgKyAxIDw9IDEpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29k
ZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJsb2NrKTsgCi0gICAgaWYgKCFtX29sZENvZGVCbG9ja3Mu
Y29udGFpbnMoY29kZUJsb2NrKSAmJiAhbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9j
aykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOwotfQot
Ci1pbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENvZGVC
bG9jayogY29kZUJsb2NrKQotewotICAgIGlmICghY29kZUJsb2NrKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUcnkgdG8gcmVjb3ZlciBncmFjZWZ1bGx5IGlmIHdlIGZvcmdldCB0byBleGVj
dXRlIGEgYmFycmllciBmb3IgYQotICAgIC8vIENvZGVCbG9jayB0aGF0IGRvZXMgdmFsdWUgcHJv
ZmlsaW5nLiBUaGlzIGlzIHByb2JhYmx5IG92ZXJraWxsLCBidXQgd2UKLSAgICAvLyBoYXZlIGFs
d2F5cyBkb25lIGl0LgotICAgIEhlYXA6OmhlYXAoY29kZUJsb2NrKS0+d3JpdGVCYXJyaWVyKGNv
ZGVCbG9jayk7Ci0KLSAgICBtX2N1cnJlbnRseUV4ZWN1dGluZy5hZGQoY29kZUJsb2NrKTsKLX0K
LQogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGFi
bGU6OmZvckVhY2hDb2RlQmxvY2soRnVuY3RvciYmIGZ1bmN0b3IpCiB7CiAgICAgc3dpdGNoICh0
eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29k
ZUJsb2NrU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDE2ICsxMDcsMTcgQEAgYm9vbCBD
b2RlQmxvY2tTZXQ6OmNvbnRhaW5zKGNvbnN0IExvY2tIbwogICAgIHJldHVybiBtX29sZENvZGVC
bG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSB8fCBtX25ld0NvZGVCbG9ja3MuY29udGFpbnMoY29k
ZUJsb2NrKSB8fCBtX2N1cnJlbnRseUV4ZWN1dGluZy5jb250YWlucyhjb2RlQmxvY2spOwogfQog
Ci12b2lkIENvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJs
b2NrcyhIZWFwKiBoZWFwKQordm9pZCBDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRs
eUV4ZWN1dGluZyhIZWFwKiBoZWFwKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2xvY2sp
OwogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nKCJSZW1lbWJlcmluZyAiLCBtX2N1
cnJlbnRseUV4ZWN1dGluZy5zaXplKCksICIgY29kZSBibG9ja3MuXG4iKTsKICAgICBmb3IgKENv
ZGVCbG9jayogY29kZUJsb2NrIDogbV9jdXJyZW50bHlFeGVjdXRpbmcpCiAgICAgICAgIGhlYXAt
PndyaXRlQmFycmllcihjb2RlQmxvY2spOworfQogCi0gICAgLy8gSXQncyBzYWZlIHRvIGNsZWFy
IHRoaXMgc2V0IGJlY2F1c2Ugd2Ugd29uJ3QgZGVsZXRlIHRoZSBDb2RlQmxvY2tzCi0gICAgLy8g
aW4gaXQgdW50aWwgdGhlIG5leHQgR0MsIGFuZCB3ZSdsbCByZWNvbXB1dGUgaXQgYXQgdGhhdCB0
aW1lLgordm9pZCBDb2RlQmxvY2tTZXQ6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCkKK3sKICAg
ICBtX2N1cnJlbnRseUV4ZWN1dGluZy5jbGVhcigpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
LDcgKzcxLDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIEFkZCBhbGwgY3VycmVudGx5IGV4ZWN1
dGluZyBDb2RlQmxvY2tzIHRvIHRoZSByZW1lbWJlcmVkIHNldCB0byBiZSAKICAgICAvLyByZS1z
Y2FubmVkIGR1cmluZyB0aGUgbmV4dCBjb2xsZWN0aW9uLgotICAgIHZvaWQgd3JpdGVCYXJyaWVy
Q3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcyhIZWFwKik7CisgICAgdm9pZCB3cml0ZUJhcnJp
ZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCopOworCisgICAgdm9pZCBjbGVhckN1cnJlbnRseUV4
ZWN1dGluZygpOwogCiAgICAgYm9vbCBjb250YWlucyhjb25zdCBMb2NrSG9sZGVyJiwgdm9pZCog
Y2FuZGlkYXRlQ29kZUJsb2NrKTsKICAgICBMb2NrJiBnZXRMb2NrKCkgeyByZXR1cm4gbV9sb2Nr
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
SW5saW5lcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
ZGVCbG9ja1NldElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6Om1hcmsoY29uc3QgTG9j
a0hvbGRlciYgbG9ja2VyLCB2b2lkKiBjYW5kaWRhdGVDb2RlQmxvY2spCit7CisgICAgQVNTRVJU
KG1fbG9jay5pc0xvY2tlZCgpKTsKKyAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGZvciAwIGFuZCAt
MSBiZWNhdXNlIHRob3NlIGFyZSB1c2VkIGJ5IHRoZSBIYXNoTWFwIGFzIG1hcmtlcnMuCisgICAg
dWludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhbmRpZGF0ZUNv
ZGVCbG9jayk7CisgICAgCisgICAgLy8gVGhpcyBjaGVja3MgZm9yIGJvdGggb2YgdGhvc2UgbmFz
dHkgY2FzZXMgaW4gb25lIGdvLgorICAgIC8vIDAgKyAxID0gMQorICAgIC8vIC0xICsgMSA9IDAK
KyAgICBpZiAodmFsdWUgKyAxIDw9IDEpCisgICAgICAgIHJldHVybjsKKworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gc3RhdGljX2Nhc3Q8Q29kZUJsb2NrKj4oY2FuZGlkYXRlQ29kZUJsb2Nr
KTsgCisgICAgaWYgKCFtX29sZENvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSAmJiAhbV9u
ZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykpCisgICAgICAgIHJldHVybjsKKworICAg
IG1hcmsobG9ja2VyLCBjb2RlQmxvY2spOworfQorCitpbmxpbmUgdm9pZCBDb2RlQmxvY2tTZXQ6
Om1hcmsoY29uc3QgTG9ja0hvbGRlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQoreworICAgIGlm
ICghY29kZUJsb2NrKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2N1cnJlbnRseUV4ZWN1dGlu
Zy5hZGQoY29kZUJsb2NrKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHJldmlz
aW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJv
b3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkNvbnNl
cnZhdGl2ZVJvb3RzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJDb2Rl
QmxvY2tTZXQuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SGVhcElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwVXRpbC5oIgogI2luY2x1ZGUgIkpJVFN0dWJS
b3V0aW5lU2V0LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNp
b24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJIZWFwLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb25z
ZXJ2YXRpdmVSb290cy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oIgpAQCAtMzg4LDE3ICszODksMTggQEAgdm9pZCBIZWFwOjpt
YXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBS
b290VmlzaXRvcihtX3Nsb3RWaXNpdG9yKTsKICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBj
b25zZXJ2YXRpdmVSb290cygqdGhpcyk7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZWFybHlDb25z
ZXJ2YXRpdmVTY2FuID0gZmFsc2U7CisgICAgCisgICAgQ29uc2VydmF0aXZlUm9vdHMgZWFybHlD
b25zZXJ2YXRpdmVSb290cygqdGhpcyk7CiAgICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVD
b252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252
ZXJnZW5jZSIpOwotICAgICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9y
ZSBjbGVhcmluZyBtYXJrIGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0
aGVyaW5nIHVzZXMgdGhlIG1hcmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5j
ZSBpcyB2YWxpZC4KLSAgICAgICAgewotICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVy
Z2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2Nh
biIpOworICAgICAgICBpZiAoZWFybHlDb25zZXJ2YXRpdmVTY2FuKSB7CisgICAgICAgICAgICBU
aW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jv
b3RzIGVhcmx5IGNvbnNlcnZhdGl2ZSBzY2FuIik7CiAgICAgICAgICAgICBTdXBlclNhbXBsZXJT
Y29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgICAgICAgICBnYXRoZXJTdGFja1Jv
b3RzKGNvbnNlcnZhdGl2ZVJvb3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVk
UmVnaXN0ZXJzKTsKLSAgICAgICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhjb25zZXJ2YXRpdmVS
b290cyk7Ci0gICAgICAgICAgICBnYXRoZXJTY3JhdGNoQnVmZmVyUm9vdHMoY29uc2VydmF0aXZl
Um9vdHMpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290cyhlYXJseUNvbnNlcnZhdGl2ZVJv
b3RzLCBzdGFja09yaWdpbiwgc3RhY2tUb3AsIGNhbGxlZVNhdmVkUmVnaXN0ZXJzKTsKKyAgICAg
ICAgICAgIGdhdGhlckpTU3RhY2tSb290cyhlYXJseUNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICAg
ICAgICAgIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhlYXJseUNvbnNlcnZhdGl2ZVJvb3RzKTsK
KyAgICAgICAgICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsK
ICAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00NjMsOSArNDY1LDI2IEBAIHZv
aWQgSGVhcDo6bWFya1Jvb3RzKGRvdWJsZSBnY1N0YXJ0VGltZSwKICAgICAgICAgUGFyYWxsZWxN
b2RlRW5hYmxlciBlbmFibGVyKG1fc2xvdFZpc2l0b3IpOwogICAgICAgICAKICAgICAgICAgbV9z
bG90VmlzaXRvci5kb25hdGVBbmREcmFpbigpOworCisgICAgICAgIGlmIChlYXJseUNvbnNlcnZh
dGl2ZVNjYW4pCisgICAgICAgICAgICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGVhcmx5Q29uc2Vy
dmF0aXZlUm9vdHMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFRpbWluZ1Njb3BlIHBy
ZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrUm9vdHMgY29uc2VydmF0
aXZlIHNjYW4iKTsKKyAgICAgICAgICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2ZVJv
b3RzKCp0aGlzKTsKKyAgICAgICAgICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKKyAgICAgICAgICAgIGdhdGhlclN0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9v
dHMsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOworICAgICAg
ICAgICAgZ2F0aGVySlNTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICAgICAgICAg
IGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CisgICAgICAgICAg
ICB2aXNpdENvbnNlcnZhdGl2ZVJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBkbyB0aGlzIHRvIGNvbnNlcnZhdGl2ZWx5IGVu
c3VyZSB0aGF0IHdlIHJlc2NhbiBhbnkgY29kZSBibG9ja3MgdGhhdCBhcmUKKyAgICAgICAgICAg
IC8vIHJ1bm5pbmcgcmlnaHQgbm93LiBIb3dldmVyLCB3ZSBuZWVkIHRvIGJlIHN1cmUgdG8gZG8g
aXQgKmFmdGVyKiB3ZSBtYXJrIHRoZSBjb2RlIGJsb2NrCisgICAgICAgICAgICAvLyBzbyB0aGF0
IHdlIGtub3cgZm9yIHN1cmUgaWYgaXQgcmVhbGx5IG5lZWRzIGEgYmFycmllci4KKyAgICAgICAg
ICAgIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKKyAgICAgICAg
fQorCiAgICAgICAgIHZpc2l0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCk7CiAgICAgICAgIHZpc2l0
U21hbGxTdHJpbmdzKCk7Ci0gICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwogICAgICAgICB2aXNpdFByb3RlY3RlZE9iamVjdHMoaGVhcFJvb3RWaXNpdG9y
KTsKICAgICAgICAgdmlzaXRBcmd1bWVudEJ1ZmZlcnMoaGVhcFJvb3RWaXNpdG9yKTsKICAgICAg
ICAgdmlzaXRFeGNlcHRpb24oaGVhcFJvb3RWaXNpdG9yKTsKQEAgLTUyNCwxMSArNTQzLDYgQEAg
dm9pZCBIZWFwOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICBtX2NvZGVCbG9ja3MtPmNsZWFyTWFy
a3NGb3JGdWxsQ29sbGVjdGlvbigpOwogICAgIAogICAgIHsKLSAgICAgICAgVGltaW5nU2NvcGUg
Y2xlYXJOZXdseUFsbG9jYXRlZFRpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5jbGVh
ck5ld2x5QWxsb2NhdGVkIik7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2UuY2xlYXJOZXdseUFsbG9j
YXRlZCgpOwotICAgIH0KLSAgICAKLSAgICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIGNsZWFyTWFy
a3NUaW1pbmdTY29wZSgqdGhpcywgIm1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nIik7CiAgICAg
ICAgIG1fb2JqZWN0U3BhY2UuYmVnaW5NYXJraW5nKCk7CiAgICAgfQpAQCAtMTA2MCw2ICsxMDc0
LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSGVhcDo6Y29sbGVjdEltcGwoSGVhcAogCiAgICAgbm90
aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0
aW5nQ29kZUJsb2NrcygpOworICAgIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcygp
OwogCiAgICAgcHJlcGFyZUZvckFsbG9jYXRpb24oKTsKICAgICB1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCk7CkBAIC0xMjAzLDcgKzEyMTgsMTIgQEAgdm9pZCBIZWFwOjpub3RpZnlJbmNyZW1lbnRh
bFN3ZWVwZXIoKQogCiB2b2lkIEhlYXA6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKQogewotICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nQ29kZUJsb2Nrcyh0aGlzKTsKKyAgICBtX2NvZGVCbG9ja3MtPndyaXRlQmFycmllckN1
cnJlbnRseUV4ZWN1dGluZyh0aGlzKTsKK30KKwordm9pZCBIZWFwOjpjbGVhckN1cnJlbnRseUV4
ZWN1dGluZ0NvZGVCbG9ja3MoKQoreworICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlF
eGVjdXRpbmcoKTsKIH0KIAogdm9pZCBIZWFwOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw2ICszNTAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlU291cmNlUHJvdmlkZXJDYWNoZXMoKTsKICAg
ICB2b2lkIG5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpOwogICAgIHZvaWQgd3JpdGVCYXJyaWVy
Q3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwog
ICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2VzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXJzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwVXRpbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBV
dGlsLmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBVdGlsLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBzZXQgPSBoZWFwLm9iamVjdFNw
YWNlKCkuYmxvY2tzKCkuc2V0KCk7CiAgICAgICAgIAorICAgICAgICBBU1NFUlQoaGVhcC5vYmpl
Y3RTcGFjZSgpLmlzTWFya2luZygpKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNNYXJr
aW5nID0gdHJ1ZTsKKyAgICAgICAgCiAgICAgICAgIGNoYXIqIHBvaW50ZXIgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4ocGFzc2VkUG9pbnRlcik7CiAgICAgICAgIAogICAgICAgICAvLyBJdCBjb3VsZCBw
b2ludCB0byBhIGxhcmdlIGFsbG9jYXRpb24uCkBAIC04NSw3ICs4OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAmJiBzZXQuY29udGFpbnMocHJldmlvdXNDYW5kaWRhdGUpCiAgICAgICAg
ICAgICAgICAgJiYgcHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmNlbGxLaW5kKCkgPT0gSGVh
cENlbGw6OkF1eGlsaWFyeSkgewogICAgICAgICAgICAgICAgIHByZXZpb3VzUG9pbnRlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEFsaWduKHBy
ZXZpb3VzUG9pbnRlcikpOwotICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+
aGFuZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgcHJldmlvdXNQb2ludGVyKSkKKyAg
ICAgICAgICAgICAgICBpZiAocHJldmlvdXNDYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwo
bWFya2luZ1ZlcnNpb24sIGlzTWFya2luZywgcHJldmlvdXNQb2ludGVyKSkKICAgICAgICAgICAg
ICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC05OSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgICAgICBhdXRvIHRyeVBvaW50ZXIgPSBbJl0gKHZvaWQqIHBvaW50ZXIpIHsKLSAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUtPmhhbmRsZSgpLmlzTGl2ZUNlbGwobWFya2luZ1ZlcnNpb24s
IHBvaW50ZXIpKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwb2ludGVyKSkKICAgICAgICAgICAgICAgICBm
dW5jKHBvaW50ZXIpOwogICAgICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MywxMSArNTMsOCBAQCBib29sIE1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dChk
b3VibGUgCiAgICAgdW5zaWduZWQgaXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2sgPSAwOwogICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtX2Jsb2Nrcy5zaXplKCk7ICsraW5kZXgpIHsK
ICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07Ci0g
ICAgICAgIGlmIChibG9jaykgewotICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRo
ZSBtZW1vcnkgb2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KLSAgICAg
ICAgICAgIGlmIChibG9jay0+YXJlTWFya3NTdGFsZSgpKQotICAgICAgICAgICAgICAgIGJsb2Nr
LT5ibG9jaygpLnJlc2V0TWFya2luZ1ZlcnNpb24oKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
YmxvY2spCisgICAgICAgICAgICBibG9jay0+YmxvY2soKS5zZXROZWVkc0Rlc3RydWN0aW9uKCk7
CiAgICAgICAgICsraXRlcnNTaW5jZUxhc3RUaW1lQ2hlY2s7CiAgICAgICAgIGlmIChpdGVyc1Np
bmNlTGFzdFRpbWVDaGVjayA+PSBIZWFwOjpzX3RpbWVDaGVja1Jlc29sdXRpb24pIHsKICAgICAg
ICAgICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7CkBAIC00MzYsNyArNDMzLDggQEAgdm9pZCBNYXJrZWRBbGxvY2F0b3I6OnN3ZWVwKCkK
IHsKICAgICBtX3Vuc3dlcHQuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKLSAgICAgICAgICAgIG1fYmxvY2tzW2luZGV4XS0+c3dlZXAoKTsKKyAgICAgICAgICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOworICAgICAgICAg
ICAgYmxvY2stPnN3ZWVwKCk7CiAgICAgICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogTWFya2VkQmxvY2s6OnRyeUNyZQog
CiBNYXJrZWRCbG9jazo6SGFuZGxlOjpIYW5kbGUoSGVhcCYgaGVhcCwgdm9pZCogYmxvY2tTcGFj
ZSkKICAgICA6IG1fd2Vha1NldChoZWFwLnZtKCksIENlbGxDb250YWluZXIoKSkKKyAgICAsIG1f
YWxsb2NhdGVkVmVyc2lvbihNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb24pCiB7CiAgICAgbV9ibG9j
ayA9IG5ldyAoTm90TnVsbCwgYmxvY2tTcGFjZSkgTWFya2VkQmxvY2soKmhlYXAudm0oKSwgKnRo
aXMpOwogICAgIApAQCAtMTI1LDcgKzEyNiw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnNwZWNpYWxpemUKICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBdG9tKCk7IGkgPCBtX2Vu
ZEF0b207IGkgKz0gbV9hdG9tc1BlckNlbGwpIHsKICAgICAgICAgaWYgKGVtcHR5TW9kZSA9PSBO
b3RFbXB0eQogICAgICAgICAgICAgJiYgKChtYXJrc01vZGUgPT0gTWFya3NOb3RTdGFsZSAmJiBi
bG9jay5tX21hcmtzLmdldChpKSkKLSAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRN
b2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkpKSB7
CisgICAgICAgICAgICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9j
YXRlZCAmJiBtX25ld2x5QWxsb2NhdGVkLmdldChpKSkpKSB7CiAgICAgICAgICAgICBpc0VtcHR5
ID0gZmFsc2U7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTQ4LDcgKzE0
OSw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxpemUKICAgICAvLyBX
ZSBvbmx5IHdhbnQgdG8gZGlzY2FyZCB0aGUgbmV3bHlBbGxvY2F0ZWQgYml0cyBpZiB3ZSdyZSBj
cmVhdGluZyBhIEZyZWVMaXN0LAogICAgIC8vIG90aGVyd2lzZSB3ZSB3b3VsZCBsb3NlIGluZm9y
bWF0aW9uIG9uIHdoYXQncyBjdXJyZW50bHkgYWxpdmUuCiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBT
d2VlcFRvRnJlZUxpc3QgJiYgbmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVk
KQotICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKKyAgICAgICAgbV9hbGxvY2F0
ZWRWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uOwogCiAgICAgRnJlZUxpc3QgcmVz
dWx0ID0gRnJlZUxpc3Q6Omxpc3QoaGVhZCwgY291bnQgKiBjZWxsU2l6ZSgpKTsKICAgICBpZiAo
c3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCkKQEAgLTIwNyw3ICsyMDgsNyBAQCBGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlCiB0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6
SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25N
b2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgogRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9j
YXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQogewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQor
ICAgIGlmIChoYXNBbnlOZXdseUFsbG9jYXRlZCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxw
ZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9k
ZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUs
IERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzUsOCArMjc2
LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIC8vIGFs
bG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3QgYXJlIG5vdCBjdXJyZW50bHkgbWFya2VkLCBzbyB3
ZSBuZWVkIGFub3RoZXIKICAgICAvLyB3YXkgdG8gdGVsbCB3aGF0J3MgbGl2ZSB2cyBkZWFkLiAK
ICAgICAKLSAgICBBU1NFUlQoIW1fbmV3bHlBbGxvY2F0ZWQpOwotICAgIG1fbmV3bHlBbGxvY2F0
ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAg
IG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBo
ZWFwKCktPm9iamVjdFNwYWNlKCkuYWxsb2NhdGVkVmVyc2lvbigpOwogCiAgICAgU2V0TmV3bHlB
bGxvY2F0ZWRGdW5jdG9yIGZ1bmN0b3IodGhpcyk7CiAgICAgZm9yRWFjaENlbGwoZnVuY3Rvcik7
CkBAIC0yOTUsMTAgKzI5NiwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxv
Y2F0aW5nCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkK
IHsKICAgICBhbGxvY2F0b3IoKS0+c2V0SXNBbGxvY2F0ZWQodGhpcywgZmFsc2UpOwotICAgIG1f
YmxvY2stPmNsZWFyTWFya3MoKTsKKyAgICBtX2Jsb2NrLT5tX21hcmtzLmNsZWFyQWxsKCk7Cisg
ICAgbV9ibG9jay0+Y2xlYXJIYXNBbnlNYXJrZWQoKTsKKyAgICBtX2Jsb2NrLT5tX21hcmtpbmdW
ZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCk7CiAgICAgbV93
ZWFrU2V0Lmxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7Ci0KLSAgICBjbGVhck5ld2x5QWxsb2NhdGVk
KCk7CisgICAgbV9uZXdseUFsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1fYWxsb2NhdGVkVmVy
c2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAgICAgc3dl
ZXAoKTsKIH0KIApAQCAtMzA3LDcgKzMxMCw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5k
bGU6OnJlc3VtZUFsbG8KICAgICBBU1NFUlQoIWFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCh0aGlz
KSk7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAKLSAgICBpZiAoIW1fbmV3bHlBbGxv
Y2F0ZWQpIHsKKyAgICBpZiAoIWhhc0FueU5ld2x5QWxsb2NhdGVkKCkpIHsKICAgICAgICAgLy8g
VGhpcyBtZWFucyB3ZSBoYWQgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIGJsb2NrIHdoZW4gd2Ugc3Rv
cHBlZCBhbGxvY2F0aW9uLgogICAgICAgICByZXR1cm4gRnJlZUxpc3QoKTsKICAgICB9CkBAIC0z
NDYsMjQgKzM0OSw2MyBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZl
CiB7CiAgICAgQVNTRVJUKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5pc01hcmtpbmcoKSk7CiAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXJlTWFya3NTdGFsZShtYXJr
aW5nVmVyc2lvbikpIHsKLSAgICAgICAgY2xlYXJNYXJrcyhtYXJraW5nVmVyc2lvbik7Ci0gICAg
ICAgIC8vIFRoaXMgbWVhbnMgd2UncmUgdGhlIGZpcnN0IG9uZXMgdG8gbWFyayBhbnkgb2JqZWN0
IGluIHRoaXMgYmxvY2suCi0gICAgICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRB
bmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgaWYgKCFhcmVN
YXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlm
IChoYW5kbGUoKS5hbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQoJmhhbmRsZSgpKQorICAgICAgICB8
fCAhbWFya3NDb252ZXlMaXZlbmVzc0R1cmluZ01hcmtpbmcobWFya2luZ1ZlcnNpb24pKSB7Cisg
ICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGF0IHRoZSBibG9jayBpcyBmdWxsIGFuZCBpcyBh
bHJlYWR5IHJlY29nbml6ZWQgYXMgc3VjaCwgb3IgdGhhdCB0aGUKKyAgICAgICAgLy8gYmxvY2sg
ZGlkIG5vdCBzdXJ2aXZlIHRoZSBwcmV2aW91cyBHQy4gU28sIHdlIGNhbiBjbGVhciBtYXJrIGJp
dHMgdGhlIG9sZCBmYXNoaW9uZWQKKyAgICAgICAgLy8gd2F5LiBOb3RlIHRoYXQgaXQncyBwb3Nz
aWJsZSBmb3Igc3VjaCBhIGJsb2NrIHRvIGhhdmUgbmV3bHlBbGxvY2F0ZWQgd2l0aCBhbiB1cC10
by0KKyAgICAgICAgLy8gZGF0ZSB2ZXJzaW9uISBJZiBpdCBkb2VzLCB0aGVuIHdlIHdhbnQgdG8g
bGVhdmUgdGhlIG5ld2x5QWxsb2NhdGVkIGFsb25lLCBzaW5jZSB0aGF0CisgICAgICAgIC8vIG1l
YW5zIHRoYXQgd2UgaGFkIGFsbG9jYXRlZCBpbiB0aGlzIHByZXZpb3VzbHkgZW1wdHkgYmxvY2sg
YnV0IGRpZCBub3QgZmlsbCBpdCB1cCwgc28KKyAgICAgICAgLy8gd2UgY3JlYXRlZCBhIG5ld2x5
QWxsb2NhdGVkLgorICAgICAgICBtX21hcmtzLmNsZWFyQWxsKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbiA9IHZtKCktPmhlYXAub2JqZWN0U3Bh
Y2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CisgICAgICAgIHNpemVfdCBjb3VudDsKKyAgICAgICAg
aWYgKGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9PSBhbGxvY2F0ZWRWZXJzaW9uKSB7Cisg
ICAgICAgICAgICAvLyBNZXJnZSB0aGUgY29udGVudHMgb2YgbWFya2VkIGludG8gbmV3bHlBbGxv
Y2F0ZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQgb2YgYml0cworICAgICAgICAgICAgLy8gdGhl
biBpbnZhbGlkYXRlIG5ld2x5QWxsb2NhdGVkIGFuZCBzZXQgYWxsb2NhdGVkLgorICAgICAgICAg
ICAgY291bnQgPSBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkLm1lcmdlQ291bnRBbmRDbGVhciht
X21hcmtzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNv
bnRlbnRzIG9mIG5ld2x5QWxsb2NhdGVkIHdpdGggbWFya2VkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwg
c2V0IG9mCisgICAgICAgICAgICAvLyBiaXRzIHRoZW4gaW52YWxpZGF0ZSBuZXdseUFsbG9jYXRl
ZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgIGNvdW50ID0gaGFuZGxlKCkubV9uZXds
eUFsbG9jYXRlZC5zZXRDb3VudEFuZENsZWFyKG1fbWFya3MpOworICAgICAgICB9CisgICAgICAg
IGlmICghY291bnQpCisgICAgICAgICAgICBoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBN
YXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgICAgIGVsc2UgaWYgKGNvdW50ID09IGhhbmRs
ZSgpLmNlbGxzUGVyQmxvY2soKSkgeworICAgICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCkt
PnNldElzQWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7CisgICAgICAgICAgICBoYW5kbGUoKS5t
X2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgaGFuZGxlKCkubV9hbGxvY2F0ZWRWZXJzaW9uID0gYWxsb2NhdGVk
VmVyc2lvbjsKICAgICB9CisgICAgY2xlYXJIYXNBbnlNYXJrZWQoKTsKKyAgICBXVEY6OnN0b3Jl
U3RvcmVGZW5jZSgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsKKyAg
ICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJzdCBvbmVzIHRvIG1hcmsgYW55IG9i
amVjdCBpbiB0aGlzIGJsb2NrLgorICAgIGhhbmRsZSgpLmFsbG9jYXRvcigpLT5hdG9taWNTZXRB
bmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwgdHJ1ZSk7CiB9CiAKLXZvaWQgTWFy
a2VkQmxvY2s6OmNsZWFyTWFya3MoKQordm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXNldEFs
bG9jYXRlZCgpCiB7Ci0gICAgY2xlYXJNYXJrcyh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFy
a2luZ1ZlcnNpb24oKSk7CisgICAgbV9uZXdseUFsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1f
YWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAotdm9pZCBN
YXJrZWRCbG9jazo6Y2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKK3ZvaWQg
TWFya2VkQmxvY2s6OnJlc2V0TWFya3MoKQogewotICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKLSAg
ICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0gICAg
bV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIC8vIFdlIHdhbnQgYWJvdXRU
b01hcmtTbG93KCkgdG8gc2VlIHdoYXQgdGhlIG1hcmsgYml0cyB3ZXJlIGFmdGVyIHRoZSBsYXN0
IGNvbGxlY3Rpb24uIEl0IHVzZXMKKyAgICAvLyB0aGUgdmVyc2lvbiBudW1iZXIgdG8gZGlzdGlu
Z3Vpc2ggYmV0d2VlbiB0aGUgbWFya3MgaGF2aW5nIGFscmVhZHkgYmVlbiBzdGFsZSBiZWZvcmUK
KyAgICAvLyBiZWdpbk1hcmtpbmcoKSwgb3IganVzdCBzdGFsZSBub3cgdGhhdCBiZWdpbk1hcmtp
bmcoKSBidW1wZWQgdGhlIHZlcnNpb24uIElmIHdlIGhhdmUgYSB2ZXJzaW9uCisgICAgLy8gd3Jh
cGFyb3VuZCwgdGhlbiB3ZSB3aWxsIGNhbGwgdGhpcyBtZXRob2QgYmVmb3JlIHJlc2V0dGluZyB0
aGUgdmVyc2lvbiB0byBudWxsLiBXaGVuIHRoZQorICAgIC8vIHZlcnNpb24gaXMgbnVsbCwgYWJv
dXRUb01hcmtTbG93KCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgbWFya3Mgd2VyZSBub3Qgc3RhbGUg
YXMgb2YgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCkuIEhlbmNlIHRoZSBuZWVkIHRvIHdo
aXAgdGhlIG1hcmtzIGludG8gc2hhcGUuCisgICAgaWYgKGFyZU1hcmtzU3RhbGUoKSkKKyAgICAg
ICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFj
ZTo6bnVsbFZlcnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00MjUsNiArNDY3
LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG8KICAgICBtX2Fs
bG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7CiB9CiAKK3ZvaWQgTWFya2VkQmxvY2s6OnNldE5l
ZWRzRGVzdHJ1Y3Rpb24oKQoreworICAgIG1fbmVlZHNEZXN0cnVjdGlvbiA9IGhhbmRsZSgpLm5l
ZWRzRGVzdHJ1Y3Rpb24oKTsKK30KKwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRU
b0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4KQogewog
ICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkp
OwpAQCAtNDQyLDEwICs0ODksOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRv
QWxsb2NhCiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6SlNDZWxs
KQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9l
c05vdE5lZWREZXN0cnVjdGlvbik7CiAgICAgCi0gICAgYmxvY2soKS5tX25lZWRzRGVzdHJ1Y3Rp
b24gPSBuZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgYmxvY2soKS5zZXROZWVkc0Rlc3RydWN0aW9u
KCk7CiAgICAgCi0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNwYWNlOjpibG9j
a1BheWxvYWQgLyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9IC0oT3B0aW9u
czo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7CisgICAgZG91
YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24o
KSAqIGNlbGxzUGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8gVGhlIG1hcmsgY291bnQgYmlhcyBz
aG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCiAgICAgUkVMRUFTRV9BU1NF
UlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQxNl90Pjo6bWluKCkpKTsKQEAgLTQ2NiwxMiArNTEyLDEyIEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUEKIAogYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgcmV0dXJuIGlzTGl2ZSh2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgY2VsbCk7CisgICAgcmV0dXJuIGlz
TGl2ZShzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgY2Vs
bCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChjb25zdCB2b2lk
KiBwKQogewotICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5t
YXJraW5nVmVyc2lvbigpLCBwKTsKKyAgICByZXR1cm4gaXNMaXZlQ2VsbChzcGFjZSgpLT5tYXJr
aW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShy
ZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKK2NsYXNzIE1h
cmtlZFNwYWNlOwogCiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1aW50MzJfdCBI
ZWFwVmVyc2lvbjsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgTWFya2Vk
QWxsb2NhdG9yKiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgSGVhcCogaGVhcCgpIGNvbnN0
OworICAgICAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAgICAgICAgIFZN
KiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAgICAgICAgICAK
QEAgLTE0MSwxMSArMTQzLDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIHN0b3BBbGxvY2F0aW5n
KGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VtZUFsbG9jYXRpbmcoKTsg
Ly8gQ2FsbCB0aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9yIHNvbWUgbm9uLWNv
bGxlY3Rpb24gcmVsYXRlZCBwdXJwb3NlLgogICAgICAgICAgICAgCi0gICAgICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwIHdhcyBub24tbnVsbCAKLSAg
ICAgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ugb3RoZXJ3aXNl
LgotICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAgICAgIAogICAg
ICAgICBzaXplX3QgY2VsbFNpemUoKTsKKyAgICAgICAgaW5saW5lIHVuc2lnbmVkIGNlbGxzUGVy
QmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkg
Y29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwpAQCAtMTUzLDkg
KzE1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICBzaXplX3QgbWFya0NvdW50
KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgaW5saW5l
IGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCop
OwotICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uLCBjb25zdCB2b2lkKik7CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmUo
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCBIZWFwQ2Vs
bCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdW
ZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9pZCopOwogCiAgICAgICAgIGJvb2wgaXNM
aXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lk
Kik7CkBAIC0xNjQsOCArMTY0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXROZXdseUFs
bG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJOZXdseUFsbG9jYXRlZChj
b25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBib29sIGhhc0FueU5ld2x5QWxsb2NhdGVk
KCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9Ci0gICAgICAgICAgICAKKyAg
ICAgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b2NhdGVkVmVyc2lvbjsgfQorICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNOZXdseUFs
bG9jYXRlZFN0YWxlKCkgY29uc3Q7CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9vbCBoYXNB
bnlOZXdseUFsbG9jYXRlZCgpOworICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdGVkKCk7CisgICAg
ICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gSXRlcmF0aW9uU3RhdHVz
IGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaExpdmVDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVy
YXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKQEAgLTE4NSw3ICsx
OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhbmRsZShI
ZWFwJiwgdm9pZCopOwotICAgICAgICAgICAgCisgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxE
ZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3ZWVwSGVscGVyU2VsZWN0U2NyaWJi
bGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAgICAgICAgICAKQEAgLTIyMyw3ICsy
MjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtX2F0b21zUGVyQ2VsbCB7IHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgc2l6ZV90IG1fZW5kQXRvbSB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsgLy8gVGhpcyBpcyBhIGZ1enp5
IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgogICAgICAgICAgICAgCi0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9j
YXRlZDsKKyAgICAgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4gbV9uZXdseUFsbG9jYXRl
ZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JBdHRyaWJ1dGVzIG1fYXR0cmlidXRl
czsKICAgICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZhbHNlIH07CkBAIC0yMzEsNiArMjM2
LDggQEAgcHVibGljOgogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9yIHsgbnVs
bHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dlYWtTZXQ7CisgICAgICAgIAorICAg
ICAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb247CiAgICAgICAgICAgICAKICAgICAg
ICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07CiAgICAgfTsKQEAgLTI0MCw2ICsy
NDcsOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5kbGUoKTsKICAgICAgICAgCiAgICAgVk0q
IHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAgICBpbmxpbmUg
TWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgYm9vbCBpc0F0b21BbGln
bmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFya2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0
IHZvaWQqKTsKQEAgLTI3OCw3ICsyODcsMTAgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25lZWRzRGVzdHJ1Y3Rpb247IH0K
ICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgLy8gVGhp
cyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2UgaXQgYXMgYSBuby1vcCB0aGF0IHRvdWNo
ZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAgIHZvaWQgc2V0TmVlZHNEZXN0cnVjdGlv
bigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJrcygpOwogICAgIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpAQCAt
Mjg5LDEzICszMDEsMTMgQEAgcHJpdmF0ZToKICAgICBBdG9tKiBhdG9tcygpOwogICAgICAgICAK
ICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7Ci0g
ICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAg
dm9pZCBub3RlTWFya2VkU2xvdygpOworICAgIAorICAgIGlubGluZSBib29sIG1hcmtzQ29udmV5
TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAg
ICAgCi0gICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVp
bnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4gbV9tYXJrczsK
IAogICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9uOwogICAgIExvY2sgbV9sb2NrOwpAQCAtNTIx
LDI2ICs1MzMsMTcgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZQog
CiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc05ld2x5QWxsb2NhdGVkKGNvbnN0
IHZvaWQqIHApCiB7Ci0gICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChtX2Jsb2NrLT5h
dG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9uZXdseUFsbG9jYXRlZC5nZXQobV9ibG9jay0+
YXRvbU51bWJlcihwKSk7CiB9CiAKIGlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNl
dE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgbV9uZXdseUFsbG9jYXRlZC0+
c2V0KG1fYmxvY2stPmF0b21OdW1iZXIocCkpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuc2V0KG1f
YmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgbV9uZXdseUFs
bG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51bWJlcihwKSk7Ci19Ci0KLWlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGlmICht
X25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIG1fbmV3
bHlBbGxvY2F0ZWQuY2xlYXIobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKIGlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCogcCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMDY3
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDM0IEBACiAKICNpbmNsdWRlICJNYXJrZWRBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNl
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxs
KQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2soKQor
eworICAgIHJldHVybiBNYXJrZWRTcGFjZTo6YmxvY2tQYXlsb2FkIC8gY2VsbFNpemUoKTsKK30K
KworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJr
aW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQoreworICAgIC8vIFRoaXMgcmV0dXJucyB0
cnVlIGlmIGFueSBvZiB0aGVzZSBpcyB0cnVlOgorICAgIC8vIC0gV2UganVzdCBjcmVhdGVkIHRo
ZSBibG9jayBhbmQgc28gdGhlIGJpdHMgYXJlIGNsZWFyIGFscmVhZHkuCisgICAgLy8gLSBUaGlz
IGJsb2NrIGhhcyBvYmplY3RzIG1hcmtlZCBkdXJpbmcgdGhlIGxhc3QgR0MsIGFuZCBzbyBpdHMg
dmVyc2lvbiB3YXMgdXAtdG8tZGF0ZSBqdXN0CisgICAgLy8gICBiZWZvcmUgdGhlIGN1cnJlbnQg
Y29sbGVjdGlvbiBkaWQgYmVnaW5NYXJraW5nKCkuIFRoaXMgbWVhbnMgdGhhdCBhbnkgb2JqZWN0
cyB0aGF0IGhhdmUgCisgICAgLy8gICB0aGVpciBtYXJrIGJpdCBzZXQgYXJlIHZhbGlkIG9iamVj
dHMgdGhhdCB3ZXJlIG5ldmVyIGRlbGV0ZWQsIGFuZCBzbyBhcmUgY2FuZGlkYXRlcyBmb3IKKyAg
ICAvLyAgIG1hcmtpbmcgaW4gYW55IGNvbnNlcnZhdGl2ZSBzY2FuLiBVc2luZyBvdXIgamFyZ29u
LCB0aGV5IGFyZSAibGl2ZSIuCisgICAgLy8gLSBXZSBkaWQgfjJeMzIgY29sbGVjdGlvbnMgYW5k
IHJvdGF0ZWQgdGhlIHZlcnNpb24gYmFjayB0byBudWxsLCBzbyB3ZSBuZWVkZWQgdG8gaGFyZC1y
ZXNldAorICAgIC8vICAgZXZlcnl0aGluZy4gSWYgdGhlIG1hcmtzIGhhZCBiZWVuIHN0YWxlLCB3
ZSB3b3VsZCBoYXZlIGNsZWFyZWQgdGhlbS4gU28sIHdlIGNhbiBiZSBzdXJlIHRoYXQKKyAgICAv
LyAgIGFueSBzZXQgbWFyayBiaXQgcmVmbGVjdHMgb2JqZWN0cyBtYXJrZWQgZHVyaW5nIGxhc3Qg
R0MsIGkuZS4gImxpdmUiIG9iamVjdHMuCisgICAgLy8gSXQgd291bGQgYmUgYWJzdXJkIHRvIHVz
ZSB0aGlzIG1ldGhvZCB3aGVuIG5vdCBjb2xsZWN0aW5nLCBzaW5jZSB0aGlzIHNwZWNpYWwgIm9u
ZSB2ZXJzaW9uCisgICAgLy8gYmFjayIgc3RhdGUgb25seSBtYWtlcyBzZW5zZSB3aGVuIHdlJ3Jl
IGluIGEgY29uY3VycmVudCBjb2xsZWN0aW9uIGFuZCBoYXZlIHRvIGJlCisgICAgLy8gY29uc2Vy
dmF0aXZlLgorICAgIHJldHVybiBtX21hcmtpbmdWZXJzaW9uID09IE1hcmtlZFNwYWNlOjpudWxs
VmVyc2lvbgorICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24obV9tYXJraW5nVmVy
c2lvbikgPT0gbWFya2luZ1ZlcnNpb247Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgYm9vbCBpc01hcmtpbmcs
IGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewogICAgIEFTU0VSVCghaXNGcmVlTGlzdGVkKCkpOwog
ICAgIApAQCAtMzksMjIgKzYzLDM2IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBNYXJr
ZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwotICAgIAogICAgIGlmIChhbGxvY2F0b3Io
KS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGlm
IChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7CisgICAgCisgICAg
aWYgKGJsb2NrLmFyZU1hcmtzU3RhbGUoKSkgeworICAgICAgICBpZiAoIWlzTWFya2luZykKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFibG9jay5tYXJrc0NvbnZleUxp
dmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogCi0gICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKGNlbGwpOworICAgIHJl
dHVybiBibG9jay5tX21hcmtzLmdldChibG9jay5hdG9tTnVtYmVyKGNlbGwpKTsKIH0KIAotaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJr
aW5nVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5n
LCBjb25zdCB2b2lkKiBwKQogewogICAgIGlmICghbV9ibG9jay0+aXNBdG9tKHApKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgc3RhdGlj
X2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CisgICAgcmV0dXJuIGlzTGl2ZShtYXJraW5nVmVy
c2lvbiwgaXNNYXJraW5nLCBzdGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKK30KKwor
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZFN0YWxlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uICE9IHNwYWNlKCktPmFsbG9j
YXRlZFZlcnNpb24oKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aGFz
QW55TmV3bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiAhaXNOZXdseUFsbG9jYXRlZFN0YWxl
KCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgpAQCAtODcsOSArMTI1LDE5IEBA
IGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQKICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OnJl
c2V0TWFya2luZ1ZlcnNpb24oKQoraW5saW5lIEhlYXAqIE1hcmtlZEJsb2NrOjpoZWFwKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7Cit9CisKK2lubGluZSBNYXJrZWRTcGFjZSog
TWFya2VkQmxvY2s6OnNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJmhlYXAoKS0+b2JqZWN0
U3BhY2UoKTsKK30KKworaW5saW5lIE1hcmtlZFNwYWNlKiBNYXJrZWRCbG9jazo6SGFuZGxlOjpz
cGFjZSgpIGNvbnN0CiB7Ci0gICAgbV9tYXJraW5nVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxs
VmVyc2lvbjsKKyAgICByZXR1cm4gJmhlYXAoKS0+b2JqZWN0U3BhY2UoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwyOSArNDUxLDYgQEAgdm9pZCBN
YXJrZWRTcGFjZTo6c2hyaW5rKCkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWFya2VkU3BhY2U6
OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGZvckVhY2hBbGxvY2F0b3IoCi0gICAgICAg
IFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7Ci0g
ICAgICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBhbGxvY2F0b3IudGFr
ZUxhc3RBY3RpdmVCbG9jaygpKQotICAgICAgICAgICAgICAgIGJsb2NrLT5jbGVhck5ld2x5QWxs
b2NhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsK
LSAgICAgICAgfSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRp
b25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRl
ZCgpOwotCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgZm9yRWFjaEJsb2Nr
KAotICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewotICAgICAg
ICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRl
ZCgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgZm9yIChMYXJnZUFsbG9j
YXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCi0gICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOwot
ICAgIH0KLX0KLQogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKICAgICBpZiAo
bV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxlY3Rpb24pIHsKQEAgLTQ4
MywxNiArNDYwLDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAgICAgICAgICAgICB9
KTsKIAotICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0gbmV4dFZlcnNpb24obV9tYXJraW5nVmVy
c2lvbik7Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFkobV9tYXJraW5nVmVyc2lvbiA9
PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAt
YXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9jayB2ZXJzaW9ucyB0byBu
dWxsLgorICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikg
PT0gaW5pdGlhbFZlcnNpb24pKSB7CiAgICAgICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAg
ICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya2luZ1ZlcnNpb24oKTsKKyAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya3MoKTsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgbV9tYXJraW5nVmVyc2lvbiA9IG5l
eHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOworICAgICAgICAKICAgICAgICAgZm9yIChMYXJn
ZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCiAgICAgICAgICAg
ICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQpAQCAtNTExLDYgKzQ4NywyMyBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjplbmRNYXJraW5n
KCkKIHsKKyAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9hbGxvY2F0ZWRWZXJzaW9uKSA9
PSBpbml0aWFsVmVyc2lvbikpIHsKKyAgICAgICAgZm9yRWFjaEJsb2NrKAorICAgICAgICAgICAg
WyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsKKyAgICAgICAgICAgICAgICBoYW5k
bGUtPnJlc2V0QWxsb2NhdGVkKCk7CisgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgICAgIAor
ICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbik7
CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9y
VGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOworCisgICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxsb2NhdGVkKCkpOworICAgIH0KKwog
ICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFy
a2luZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShy
ZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwog
ICAgIAogICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRo
ZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nrcy4KLSAgICBzdGF0aWMgY29uc3Qg
SGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBo
ZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlh
bFZlcnNpb24gPSAyOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0
aC4gU2V0IHRvIG1ha2Ugc3VyZSB0aGF0IG5leHRWZXJzaW9uKG51bGxWZXJzaW9uKSAhPSBpbml0
aWFsVmVyc2lvbi4KICAgICAKLSAgICBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lv
biB2ZXJzaW9uKQorICAgIHN0YXRpYyBIZWFwVmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lv
biB2ZXJzaW9uKQogICAgIHsKICAgICAgICAgdmVyc2lvbisrOwogICAgICAgICBpZiAodmVyc2lv
biA9PSBudWxsVmVyc2lvbikKLSAgICAgICAgICAgIHZlcnNpb24rKzsKKyAgICAgICAgICAgIHZl
cnNpb24gPSBpbml0aWFsVmVyc2lvbjsKICAgICAgICAgcmV0dXJuIHZlcnNpb247CiAgICAgfQog
ICAgIApAQCAtMTcxLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91
YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKyAgICBIZWFwVmVyc2lvbiBhbGxvY2F0
ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRWZXJzaW9uOyB9CiAKICAgICBj
b25zdCBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRp
b25zTnVyc2VyeU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNl
cnlPZmZzZXQ7IH0KQEAgLTIxNyw2ICsyMTgsNyBAQCBwcml2YXRlOgogCiAgICAgSGVhcCogbV9o
ZWFwOwogICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9
OworICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07
CiAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJv
b2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsOCArMTkx
LDYgQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlk
YXRlKGNlbGwpOwogI2VuZGlmCiAgICAgCi0gICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBS
YXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKLSAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9j
YXRpb24oKSkKICAgICAgICAgc2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFy
Z2VBbGxvY2F0aW9uKCksIGNlbGwpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDY3
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU1KQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MCBAQAorMjAxNi0x
MC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1hcmtlZEJs
b2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFya2luZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzA5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlz
IGRvZXMgdHdvIHRoaW5ncy4gRmlyc3QsIEkgbm90aWNlZCB0aGF0IHRoZSBhdG9taWMgbW9kZSB3
YXMgdXNlbGVzcy4gSXQgb25seSBhZmZlY3RzIHRoZQorICAgICAgICBjb25jdXJyZW50VGVzdEFu
ZFNldHxDbGVhciBtZXRob2RzLCBhbmQgdGhlIG9ubHkgY2FsbGVyIG9mIHRob3NlIG1ldGhvZHMg
ZW5hYmxlZCBhdG9taWNpdHkuCisgICAgICAgIFNlY29uZCwgdGhpcyBhZGRzIG5ldyBwcmltaXRp
dmVzIHRoYXQgZG8gYSBidW5jaCBvZiB0aGluZ3MgYXQgb25jZToKKyAgICAgICAgCisgICAgICAg
IC0gbWVyZ2VDb3VudEFuZENsZWFyOiBtZXJnZXMgaW4gdGhlIGNvbnRlbnRzIG9mIGFub3RoZXIg
Yml0bWFwLCB3aGlsZSBjbGVhcmluZyB0aGF0IGJpdG1hcCwKKyAgICAgICAgICBhbmQgY291bnRp
bmcgdGhlIHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMgYXMgYSByZXN1bHQuCisgICAgICAgIAorICAg
ICAgICAtIHNldENvdW50QW5kQ2xlYXI6IHNldHMgdGhpcyBiaXRtYXAgdG8gaGF2ZSB0aGUgY29u
dGVudHMgb2YgYW5vdGhlciBiaXRtYXAsIHdoaWxlIGNsZWFyaW5nCisgICAgICAgICAgdGhhdCBi
aXRtYXAsIGFuZCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHNldCBiaXRzLgorICAgICAgICAKKyAg
ICAgICAgLSBzZXRBbmRDbGVhcjogc2V0cyB0aGlzIGJpdG1hcCB0byBoYXZlIHRoZSBjb250ZW50
cyBvZiBhbm90aGVyIGJpdG1hcCB3aGlsZSBjbGVhcmluZyB0aGF0CisgICAgICAgICAgYml0bWFw
LgorICAgICAgICAKKyAgICAgICAgSXQncyBpbXBvcnRhbnQgZm9yIHRoZXNlIHRvIGJlIGZhc3Qs
IHNpbmNlIHRoZSBHQyB1c2VzIHRoZW0gZHVyaW5nIG1hcmtpbmcuCisgICAgICAgIAorICAgICAg
ICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpCaXRtYXApOgorICAg
ICAgICAoV1RGOjpXb3JkVHlwZT46OmdldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojp0ZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6
V29yZFR5cGU+Ojp0ZXN0QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvbmN1
cnJlbnRUZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb25jdXJyZW50VGVz
dEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpjbGVhcik6CisgICAgICAgIChX
VEY6OldvcmRUeXBlPjo6Y2xlYXJBbGwpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om5leHRQ
b3NzaWJseVVuc2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyk6
CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmlzRnVsbCk6CisgICAgICAg
IChXVEY6OldvcmRUeXBlPjo6bWVyZ2UpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmZpbHRl
cik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZXhjbHVkZSk6CisgICAgICAgIChXVEY6Oldv
cmRUeXBlPjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6bWVyZ2VD
b3VudEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRDb3VudEFuZENsZWFy
KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRDbGVhcik6CisgICAgICAgIChXVEY6
Oj0pOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2gpOgorCiAyMDE2LTEwLTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEtl
eWJvYXJkRXZlbnQua2V5IGF0dHJpYnV0ZQpJbmRleDogU291cmNlL1dURi93dGYvQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFwLmgJKHJldmlzaW9uIDIwNjc1NSkK
KysrIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNiArMjcs
NyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBCaXRtYXBBdG9taWNNb2RlIHsKLSAgICAv
LyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IGJlaGF2ZSBqdXN0IGxpa2UgdGVzdEFu
ZFNldC4KLSAgICBCaXRtYXBOb3RBdG9taWMsCi0KLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJl
bnRUZXN0QW5kU2V0IHVzZSBjb21wYXJlQW5kU3dhcCwgc28gdGhhdCBpdCdzCi0gICAgLy8gYXRv
bWljIGV2ZW4gd2hlbiB1c2VkIGNvbmN1cnJlbnRseS4KLSAgICBCaXRtYXBBdG9taWMKLX07Ci0K
LXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUg
PSBCaXRtYXBOb3RBdG9taWMsIHR5cGVuYW1lIFdvcmRUeXBlID0gdWludDMyX3Q+Cit0ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KIGNsYXNz
IEJpdG1hcCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgCkBAIC01OSw4ICs1
MCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbmV4dFBvc3NpYmx5VW5zZXQoc2l6ZV90KSBjb25z
dDsKICAgICB2b2lkIGNsZWFyKHNpemVfdCk7CiAgICAgdm9pZCBjbGVhckFsbCgpOwotICAgIGlu
dDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90KSBjb25zdDsKLSAgICBzaXplX3QgY291bnQoc2l6
ZV90ID0gMCkgY29uc3Q7CisgICAgaW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVu
Z3RoKSBjb25zdDsKKyAgICBzaXplX3QgY291bnQoc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKICAgICBzaXplX3QgaXNGdWxsKCkgY29uc3Q7CiAg
ICAgCkBAIC03MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Yz4KICAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAorICAg
IHNpemVfdCBtZXJnZUNvdW50QW5kQ2xlYXIoQml0bWFwJik7CisgICAgc2l6ZV90IHNldENvdW50
QW5kQ2xlYXIoQml0bWFwJik7CisgICAgdm9pZCBzZXRBbmRDbGVhcihCaXRtYXAmKTsKKyAgICAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIApAQCAtOTAsMjYgKzg1LDI2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjphcnJheTxXb3JkVHlwZSwgd29yZHM+IGJpdHM7CiB9OwogCi10ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBl
bmFtZSBXb3JkVHlwZT4KLWlubGluZSBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29y
ZFR5cGU+OjpCaXRtYXAoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OkJpdG1hcCgpCiB7
CiAgICAgY2xlYXJBbGwoKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90IG4pIGNv
bnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citpbmxp
bmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6ZV90IG4pIGNvbnN0
CiB7CiAgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSkpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8
Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCiB7CiAgICAgYml0c1tuIC8gd29y
ZFNpemVdIHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46
OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUpCiAgICAgICAg
IHNldChuKTsKQEAgLTExNyw4ICsxMTIsOCBAQCBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgYXRvbWljTW9kCiAgICAgICAgIGNsZWFyKG4pOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4K
LWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRl
c3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojp0ZXN0
QW5kU2V0KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAtMTI3LDggKzEyMiw4
IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9k
ZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsK
ICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBp
bmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTEzNywxNCArMTMyLDkgQEAgaW5saW5lIGJvb2wgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0
bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKIHsKLSAg
ICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0
QW5kU2V0KG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRvbWljKTsKLSAg
ICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVf
dCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9IGJpdHMuZGF0
YSgpICsgaW5kZXg7CkBAIC0xNTcsMTQgKzE0Nyw5IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRU
eXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBl
Pjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4pCiB7Ci0gICAgaWYg
KGF0b21pY01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAgICAgICByZXR1cm4gdGVzdEFuZENs
ZWFyKG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRvbWljKTsKLSAgICAK
ICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwogICAgIHNpemVfdCBp
bmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9IGJpdHMuZGF0YSgp
ICsgaW5kZXg7CkBAIC0xNzcsMjggKzE2MiwyOCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6
Y2xlYXIoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpjbGVhcihz
aXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUgPDwgKG4gJSB3b3Jk
U2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9k
ZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKK3RlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQoYml0cy5kYXRhKCks
IDAsIHNpemVvZihiaXRzKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpuZXh0UG9zc2libHlV
bnNldChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBpZiAoIX5i
aXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1cm4gKChzdGFydCAvIHdvcmRTaXpl
KSArIDEpICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0KIAotdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUg
V29yZFR5cGU+Ci1pbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwg
V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAordGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGludDY0X3Qg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxl
bmd0aCkgY29uc3QKIHsKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAgIHJ1bkxlbmd0aCA9
IDE7IApAQCAtMjE3LDggKzIwMiw4IEBAIGlubGluZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWMKICAgICByZXR1cm4gLTE7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5l
IHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb3VudChz
aXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUg
V29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNv
dW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0ID0gMDsKICAgICBm
b3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkgewpAQCAtMjMwLDggKzIxNSw4IEBA
IGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1h
cFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0Cit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKGJpdHNbaV0pCkBAIC0yMzks
OCArMjI0LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAg
IHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRv
bWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3QgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXpl
X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29uc3QKIHsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlmICh+Yml0c1tpXSkK
QEAgLTI0OCwzMCArMjMzLDMwIEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY00KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjptZXJnZShjb25z
dCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2Uo
Y29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRz
OyArK2kpCiAgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8
c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUg
V29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29y
ZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSBvdGhlci5iaXRz
W2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0bWFwJiBv
dGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAg
IGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgordGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKK2lubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVu
YyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kp
IHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBAIC0yODYsOCArMjcxLDM5IEBA
IGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICB9CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAordGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVf
dCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZUNvdW50QW5kQ2xlYXIoQml0bWFw
JiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IFdURjo6Yml0Q291bnQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXSkpOworICAgICAgICBv
dGhlci5iaXRzW2ldID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRDb3VudEFuZENsZWFyKEJpdG1hcCYgb3Ro
ZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3b3JkczsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBXVEY6OmJpdENvdW50KHN0YXRpY19j
YXN0PHVuc2lnbmVkPihiaXRzW2ldID0gb3RoZXIuYml0c1tpXSkpOworICAgICAgICBvdGhlci5i
aXRzW2ldID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJp
dG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgYml0c1tpXSA9IG90
aGVyLmJpdHNbaV07CisgICAgICAgIG90aGVyLmJpdHNbaV0gPSAwOworICAgIH0KK30KKwordGVt
cGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90
aGVyKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewog
ICAgICAgICBpZiAoYml0c1tpXSAhPSBvdGhlci5iaXRzW2ldKQpAQCAtMjk2LDE0ICszMTIsMTQg
QEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiB0
cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBh
dG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhl
cikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29u
c3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHVuc2lnbmVkIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAogewogICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290880</attachid>
            <date>2016-10-06 18:11:25 -0700</date>
            <delta_ts>2016-10-08 16:30:47 -0700</delta_ts>
            <desc>perf neutral, space neutral</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>60146</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE2LTEwLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2sgc2hvdWxkIGtub3cgd2hhdCBvYmplY3RzIGFyZSBsaXZlIGR1cmluZyBtYXJr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIz
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB3ZSB3b3VsZCBmb3JnZXQgd2hpY2ggb2JqZWN0cyBhcmUg
bGl2ZSB0aGUgbW9tZW50IHdlIHN0YXJ0ZWQgY29sbGVjdGlvbi4KKyAgICAgICAgVGhhdCdzIGJl
Y2F1c2UgdGhlIGZsaXAgYXQgdGhlIGJlZ2lubmluZyBjbGVhcnMgYWxsIG1hcmsgYml0cy4KKyAg
ICAgICAgCisgICAgICAgIEJ1dCB3ZSBhbHJlYWR5IGhhdmUgYSBmYWNpbGl0eSBmb3IgdHJhY2tp
bmcgb2JqZWN0cyB0aGF0IGFyZSBsaXZlLWJ1dC1ub3QtbWFya2VkLiBJdCdzIGNhbGxlZAorICAg
ICAgICBuZXdseUFsbG9jYXRlZC4gU28sIGluc3RlYWQgb2YgY2xlYXJpbmcgbWFyayBiaXRzLCB3
ZSB3YW50IHRvIGp1c3QgdHJhbnNmZXIgdGhlbSB0bworICAgICAgICBuZXdseUFsbG9jYXRlZC4g
VGhlbiB3ZSB3YW50IHRvIGNsZWFyIGFsbCBuZXdseUFsbG9jYXRlZCBhZnRlciBHQy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyBzdWNoIGFuIGFwcHJvYWNoLCBhbG9uZyB3aXRo
IGEgdmVyc2lvbmluZyBvcHRpbWl6YXRpb24gZm9yIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBJ
bnN0ZWFkIG9mIHdhbGtpbmcgdGhlIHdob2xlIGhlYXAgdG8gY2xlYXIgbmV3bHlBbGxvY2F0ZWQg
Yml0cyBhdCB0aGUgZW5kIG9mIHRoZSBHQywgd2UgYnVtcAorICAgICAgICB0aGUgYWxsb2NhdGVk
VmVyc2lvbiwgd2hpY2ggY2F1c2VzIE1hcmtlZEJsb2NrIHRvIHRyZWF0IG5ld2x5QWxsb2NhdGVk
IGFzIGlmIGl0IHdhcyBjbGVhci4KKyAgICAgICAgCisgICAgICAgIFRvIHZhbGlkYXRlIHRoaXMg
Y2hhbmdlLCB3ZSBub3cgcnVuIHRoZSBjb25zZXJ2YXRpdmUgc2NhbiBhZnRlciB0aGUgYmVnaW5N
YXJraW5nIGZsaXAuIEFuZCBpdAorICAgICAgICB0b3RhbGx5IHdvcmtzIQorICAgICAgICAKKyAg
ICAgICAgVGhpcyBpcyBhIGh1Z2Ugc3RlcCB0b3dhcmRzIGNvbmN1cnJlbnQgR0MuIEl0IG1lYW5z
IHRoYXQgd2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBydW4gdGhlCisgICAgICAgIGFsbG9jYXRvciB3
aGlsZSBtYXJraW5nLiBTaW5jZSB3ZSBhbHJlYWR5IHNlcGFyYXRlbHkgbWFkZSBpdCBwb3NzaWJs
ZSB0byBydW4gdGhlIGJhcnJpZXIKKyAgICAgICAgd2hpbGUgbWFya2luZywgdGhpcyBtZWFucyB0
aGF0IHdlJ3JlIHByZXR0eSBtdWNoIHJlYWR5IGZvciBzb21lIHNlcmlvdXMgY29uY3VycmVuY3kg
YWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhcHBlYXJzIHRvIGJlIHBlcmYtbmV1dHJh
bCBhbmQgc3BhY2UtbmV1dHJhbC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0
OjptYXJrKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
Q29kZUJsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuaDoKKyAg
ICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkNvZGVCbG9ja1NldDo6bWFyayk6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5j
cHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya1Jv
b3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJhcnJpZXJDdXJy
ZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6Y2xlYXJDdXJy
ZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAg
ICAgKiBoZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpmaW5kR0NPYmpl
Y3RQb2ludGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxw
ZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpI
YW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0
VG9NYXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlc2V0QWxs
b2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya3MpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbik6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpjbGVhck1h
cmtzKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmFsbG9jYXRlZFZlcnNpb24pOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOiBE
ZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmNlbGxzUGVyQmxvY2spOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmVDZWxsKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNOZXdseUFsbG9jYXRlZFN0YWxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWRXaXRoU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpoZWFwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnNwYWNlKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6cmVzZXRNYXJraW5nVmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9N
YXJrZWRTcGFjZS5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcp
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6
Ok1hcmtlZFNwYWNlOjpjbGVhck5ld2x5QWxsb2NhdGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpuZXh0VmVyc2lv
bik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6Om1hcmtpbmdWZXJzaW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorCiAyMDE2LTEwLTAzICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0aW5nIHBjVG9PcmlnaW5N
YXAgaW4gRlRMIHNob3VsZG4ndCBpbnNlcnQgdW5uZWNlc3NhcnkgTk9QcwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00NDUsNiArNDQ1LDcgQEAKIAkJMEY2NEIyNzkxQTc5NTdCMjAwNkU0RTY2IC8q
IENhbGxFZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi87IH07CiAJCTBG
NjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEIyNzgxQTc5NTdCMjAwNkU0RTY2IC8qIENh
bGxFZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY2NEVBRjMxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjRFQUYyMUM0RUNEMDYwMDYy
MUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggKi87IH07CisJCTBGNjY0Q0U4MURBMzA0RUYwMEIwMEEx
MSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29kZUJsb2NrU2V0
SW5saW5lcy5oICovOyB9OwogCQkwRjY2NkVDMDE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NjZFQkUxODM1NjZGOTAwRDAxN0YxIC8qIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjY2NkVDMTE4MzU2NkY5MDBEMDE3RjEgLyogRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjY2RUM2MTgzNTY3
MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQzIxODM1NjcyQjAwRDAxN0YxIC8qIERGR0F2
YWlsYWJpbGl0eS5jcHAgKi87IH07CkBAIC0yNjk3LDYgKzI2OTgsNyBAQAogCQkwRjY0QjI3NzFB
Nzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FsbEVkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbEVkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyQXJnSW5saW5lcy5oOyBwYXRoID0gYjMvYWlyL0FpckFy
Z0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2NjRDRTcxREEzMDRF
RDAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29kZUJsb2NrU2V0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NjY2RUJGMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZh
aWxhYmlsaXR5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0F2
YWlsYWJpbGl0eS5jcHA7IHBhdGggPSBkZmcvREZHQXZhaWxhYmlsaXR5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMDMsNiArNTMwNSw3IEBACiAJCQkJMEYxQzNERDkxQkJD
RTA5RTAwRTUyM0U0IC8qIENlbGxTdGF0ZS5oICovLAogCQkJCTBGRDhBMzExMTdENDMyNkMwMENB
MkM0MCAvKiBDb2RlQmxvY2tTZXQuY3BwICovLAogCQkJCTBGRDhBMzEyMTdENDMyNkMwMENBMkM0
MCAvKiBDb2RlQmxvY2tTZXQuaCAqLywKKwkJCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyog
Q29kZUJsb2NrU2V0SW5saW5lcy5oICovLAogCQkJCTE0NkIxNERCMTJFQjVCMTIwMDFCRUMxQiAv
KiBDb25zZXJ2YXRpdmVSb290cy5jcHAgKi8sCiAJCQkJMTQ5REFBRjIxMkVCNTU5RDAwODNCMTJC
IC8qIENvbnNlcnZhdGl2ZVJvb3RzLmggKi8sCiAJCQkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3
IC8qIERlZmVyR0MuY3BwICovLApAQCAtNzkxNyw2ICs3OTIwLDcgQEAKIAkJCQlCQzE4QzQxQzBF
MTZGNUNEMDBCMzQ0NjAgLyogSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjU3Q0Y0NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q4MDFBOTE4ODBENkE4MDAyNkMzOUIgLyogSlNDQnVpbHRpbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNjY0Q0U4MURBMzA0RUYwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzExNjdEQTBFMTlCQ0M5MDA4MDY2REQgLyog
SlNDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk3NDk3MTE2ODdBREU0MDBBNEZGNkEgLyog
SlNDZWxsSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxREQ4NEExOEE5NDVCRTAwMjZG
M0ZBIC8qIEpTQ0lubGluZXMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5o
IgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5o
IgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjA2
NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAj
aW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2tIYXNoLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29k
ZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29tcGFjdEpJVENv
ZGVNYXAuaCIKQEAgLTc2LDYgKzc1LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM7CitjbGFzcyBDb2RlQmxvY2tTZXQ7CiBjbGFzcyBFeGVjU3Rh
dGU7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwpAQCAtMTMxMSwzOCArMTMxMSw2IEBAIGlubGluZSB2b2lkIENvZGVCbG9jazo6Y2xlYXJW
aXNpdFdlYWtseUgKICAgICBtX3Zpc2l0V2Vha2x5SGFzQmVlbkNhbGxlZC5zdG9yZShmYWxzZSwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiB9CiAKLWlubGluZSB2b2lkIENvZGVCbG9ja1Nl
dDo6bWFyayhjb25zdCBMb2NrSG9sZGVyJiBsb2NrZXIsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9j
aykKLXsKLSAgICBBU1NFUlQobV9sb2NrLmlzTG9ja2VkKCkpOwotICAgIC8vIFdlIGhhdmUgdG8g
Y2hlY2sgZm9yIDAgYW5kIC0xIGJlY2F1c2UgdGhvc2UgYXJlIHVzZWQgYnkgdGhlIEhhc2hNYXAg
YXMgbWFya2Vycy4KLSAgICB1aW50cHRyX3QgdmFsdWUgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oY2FuZGlkYXRlQ29kZUJsb2NrKTsKLSAgICAKLSAgICAvLyBUaGlzIGNoZWNrcyBmb3Ig
Ym90aCBvZiB0aG9zZSBuYXN0eSBjYXNlcyBpbiBvbmUgZ28uCi0gICAgLy8gMCArIDEgPSAxCi0g
ICAgLy8gLTEgKyAxID0gMAotICAgIGlmICh2YWx1ZSArIDEgPD0gMSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPihj
YW5kaWRhdGVDb2RlQmxvY2spOyAKLSAgICBpZiAoIW1fb2xkQ29kZUJsb2Nrcy5jb250YWlucyhj
b2RlQmxvY2spICYmICFtX25ld0NvZGVCbG9ja3MuY29udGFpbnMoY29kZUJsb2NrKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbWFyayhsb2NrZXIsIGNvZGVCbG9jayk7Ci19Ci0KLWlubGluZSB2
b2lkIENvZGVCbG9ja1NldDo6bWFyayhjb25zdCBMb2NrSG9sZGVyJiwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCi17Ci0gICAgaWYgKCFjb2RlQmxvY2spCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IFRyeSB0byByZWNvdmVyIGdyYWNlZnVsbHkgaWYgd2UgZm9yZ2V0IHRvIGV4ZWN1dGUgYSBiYXJy
aWVyIGZvciBhCi0gICAgLy8gQ29kZUJsb2NrIHRoYXQgZG9lcyB2YWx1ZSBwcm9maWxpbmcuIFRo
aXMgaXMgcHJvYmFibHkgb3ZlcmtpbGwsIGJ1dCB3ZQotICAgIC8vIGhhdmUgYWx3YXlzIGRvbmUg
aXQuCi0gICAgSGVhcDo6aGVhcChjb2RlQmxvY2spLT53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsK
LQotICAgIG1fY3VycmVudGx5RXhlY3V0aW5nLmFkZChjb2RlQmxvY2spOwotfQotCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6Zm9yRWFj
aENvZGVCbG9jayhGdW5jdG9yJiYgZnVuY3RvcikKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCShyZXZp
c2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTYgKzEwNywxNyBAQCBib29sIENvZGVCbG9ja1Nl
dDo6Y29udGFpbnMoY29uc3QgTG9ja0hvCiAgICAgcmV0dXJuIG1fb2xkQ29kZUJsb2Nrcy5jb250
YWlucyhjb2RlQmxvY2spIHx8IG1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spIHx8
IG1fY3VycmVudGx5RXhlY3V0aW5nLmNvbnRhaW5zKGNvZGVCbG9jayk7CiB9CiAKLXZvaWQgQ29k
ZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKEhlYXAq
IGhlYXApCit2b2lkIENvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5n
KEhlYXAqIGhlYXApCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fbG9jayk7CiAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJlbWVtYmVyaW5nICIsIG1fY3VycmVudGx5RXhl
Y3V0aW5nLnNpemUoKSwgIiBjb2RlIGJsb2Nrcy5cbiIpOwogICAgIGZvciAoQ29kZUJsb2NrKiBj
b2RlQmxvY2sgOiBtX2N1cnJlbnRseUV4ZWN1dGluZykKICAgICAgICAgaGVhcC0+d3JpdGVCYXJy
aWVyKGNvZGVCbG9jayk7Cit9CiAKLSAgICAvLyBJdCdzIHNhZmUgdG8gY2xlYXIgdGhpcyBzZXQg
YmVjYXVzZSB3ZSB3b24ndCBkZWxldGUgdGhlIENvZGVCbG9ja3MKLSAgICAvLyBpbiBpdCB1bnRp
bCB0aGUgbmV4dCBHQywgYW5kIHdlJ2xsIHJlY29tcHV0ZSBpdCBhdCB0aGF0IHRpbWUuCit2b2lk
IENvZGVCbG9ja1NldDo6Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKQorewogICAgIG1fY3VycmVu
dGx5RXhlY3V0aW5nLmNsZWFyKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvZGVCbG9ja1NldC5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsOSBA
QCBwdWJsaWM6CiAgICAgCiAgICAgLy8gQWRkIGFsbCBjdXJyZW50bHkgZXhlY3V0aW5nIENvZGVC
bG9ja3MgdG8gdGhlIHJlbWVtYmVyZWQgc2V0IHRvIGJlIAogICAgIC8vIHJlLXNjYW5uZWQgZHVy
aW5nIHRoZSBuZXh0IGNvbGxlY3Rpb24uCi0gICAgdm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKEhlYXAqKTsKKyAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRs
eUV4ZWN1dGluZyhIZWFwKik7CisKKyAgICB2b2lkIGNsZWFyQ3VycmVudGx5RXhlY3V0aW5nKCk7
CiAKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IExvY2tIb2xkZXImLCB2b2lkKiBjYW5kaWRhdGVD
b2RlQmxvY2spOwogICAgIExvY2smIGdldExvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSB2b2lkIENvZGVCbG9ja1NldDo6bWFyayhjb25zdCBMb2NrSG9sZGVyJiBs
b2NrZXIsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jaykKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlz
TG9ja2VkKCkpOworICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgZm9yIDAgYW5kIC0xIGJlY2F1c2Ug
dGhvc2UgYXJlIHVzZWQgYnkgdGhlIEhhc2hNYXAgYXMgbWFya2Vycy4KKyAgICB1aW50cHRyX3Qg
dmFsdWUgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FuZGlkYXRlQ29kZUJsb2NrKTsK
KyAgICAKKyAgICAvLyBUaGlzIGNoZWNrcyBmb3IgYm90aCBvZiB0aG9zZSBuYXN0eSBjYXNlcyBp
biBvbmUgZ28uCisgICAgLy8gMCArIDEgPSAxCisgICAgLy8gLTEgKyAxID0gMAorICAgIGlmICh2
YWx1ZSArIDEgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBzdGF0aWNfY2FzdDxDb2RlQmxvY2sqPihjYW5kaWRhdGVDb2RlQmxvY2spOyAKKyAgICBp
ZiAoIW1fb2xkQ29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spICYmICFtX25ld0NvZGVCbG9j
a3MuY29udGFpbnMoY29kZUJsb2NrKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFyayhsb2Nr
ZXIsIGNvZGVCbG9jayk7Cit9CisKK2lubGluZSB2b2lkIENvZGVCbG9ja1NldDo6bWFyayhjb25z
dCBMb2NrSG9sZGVyJiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgaWYgKCFjb2RlQmxv
Y2spCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3VycmVudGx5RXhlY3V0aW5nLmFkZChjb2Rl
QmxvY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAkocmV2aXNpb24gMjA2NzU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9v
dHMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5o
IgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwSW5saW5l
cy5oIgogI2luY2x1ZGUgIkhlYXBVdGlsLmgiCiAjaW5jbHVkZSAiSklUU3R1YlJvdXRpbmVTZXQu
aCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAyMDY3NTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkhlYXAuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJv
b3RzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJFZGVuR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCkBAIC0zODgsMTcgKzM4OSwxOCBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhk
b3VibGUgZ2NTdGFydFRpbWUsCiAKICAgICBIZWFwUm9vdFZpc2l0b3IgaGVhcFJvb3RWaXNpdG9y
KG1fc2xvdFZpc2l0b3IpOwogICAgIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIGNvbnNlcnZhdGl2
ZVJvb3RzKCp0aGlzKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlYXJseUNvbnNlcnZhdGl2ZVNj
YW4gPSBmYWxzZTsKKyAgICAKKyAgICBDb25zZXJ2YXRpdmVSb290cyBlYXJseUNvbnNlcnZhdGl2
ZVJvb3RzKCp0aGlzKTsKICAgICB7CiAgICAgICAgIFRpbWluZ1Njb3BlIHByZUNvbnZlcmdlbmNl
VGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrUm9vdHMgYmVmb3JlIGNvbnZlcmdlbmNlIik7
Ci0gICAgICAgIC8vIFdlIGdhdGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5n
IG1hcmsgYml0cyBiZWNhdXNlIGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBnYXRoZXJpbmcgdXNl
cyB0aGUgbWFyayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZhbGlk
LgotICAgICAgICB7Ci0gICAgICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWlu
Z1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGNvbnNlcnZhdGl2ZSBzY2FuIik7CisgICAg
ICAgIGlmIChlYXJseUNvbnNlcnZhdGl2ZVNjYW4pIHsKKyAgICAgICAgICAgIFRpbWluZ1Njb3Bl
IHByZUNvbnZlcmdlbmNlVGltaW5nU2NvcGUoKnRoaXMsICJIZWFwOjptYXJrUm9vdHMgZWFybHkg
Y29uc2VydmF0aXZlIHNjYW4iKTsKICAgICAgICAgICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICAgICAgICAgIGdhdGhlclN0YWNrUm9vdHMoY29uc2Vy
dmF0aXZlUm9vdHMsIHN0YWNrT3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMp
OwotICAgICAgICAgICAgZ2F0aGVySlNTdGFja1Jvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKLSAg
ICAgICAgICAgIGdhdGhlclNjcmF0Y2hCdWZmZXJSb290cyhjb25zZXJ2YXRpdmVSb290cyk7Cisg
ICAgICAgICAgICBnYXRoZXJTdGFja1Jvb3RzKGVhcmx5Q29uc2VydmF0aXZlUm9vdHMsIHN0YWNr
T3JpZ2luLCBzdGFja1RvcCwgY2FsbGVlU2F2ZWRSZWdpc3RlcnMpOworICAgICAgICAgICAgZ2F0
aGVySlNTdGFja1Jvb3RzKGVhcmx5Q29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgZ2F0
aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGVhcmx5Q29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAg
ICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOwogICAgICAgICB9
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQ2Myw5ICs0NjUsMjYgQEAgdm9pZCBIZWFwOjpt
YXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQYXJhbGxlbE1vZGVFbmFibGVy
IGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAgICBtX3Nsb3RWaXNpdG9y
LmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgaWYgKGVhcmx5Q29uc2VydmF0aXZlU2NhbikK
KyAgICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoZWFybHlDb25zZXJ2YXRpdmVSb290
cyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2Vu
Y2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIp
OworICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9vdHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMp
OworICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tP
cmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBnYXRo
ZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgZ2F0aGVyU2Ny
YXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAgICAgICAgICAgIHZpc2l0Q29u
c2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8gY29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQg
d2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0IGFyZQorICAgICAgICAgICAgLy8gcnVubmlu
ZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5lZWQgdG8gYmUgc3VyZSB0byBkbyBpdCAqYWZ0ZXIq
IHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgd2Uga25vdyBm
b3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMgYSBiYXJyaWVyLgorICAgICAgICAgICAgd3JpdGVC
YXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpOworICAgICAgICB9CisKICAgICAg
ICAgdmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQoKTsKICAgICAgICAgdmlzaXRTbWFsbFN0cmlu
Z3MoKTsKLSAgICAgICAgdmlzaXRDb25zZXJ2YXRpdmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7
CiAgICAgICAgIHZpc2l0UHJvdGVjdGVkT2JqZWN0cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAg
ICB2aXNpdEFyZ3VtZW50QnVmZmVycyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEV4
Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3IpOwpAQCAtNTI0LDExICs1NDMsNiBAQCB2b2lkIEhlYXA6
OmJlZ2luTWFya2luZygpCiAgICAgICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxD
b2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewotICAgICAgICBUaW1pbmdTY29wZSBjbGVhck5ld2x5
QWxsb2NhdGVkVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxv
Y2F0ZWQiKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0g
ICAgfQotICAgIAotICAgIHsKICAgICAgICAgVGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Nj
b3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmciKTsKICAgICAgICAgbV9vYmpl
Y3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAgICB9CkBAIC0xMDYwLDYgKzEwNzQsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0SW1wbChIZWFwCiAKICAgICBub3RpZnlJbmNyZW1l
bnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxv
Y2tzKCk7CisgICAgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CiAKICAgICBw
cmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAgIHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKQEAg
LTEyMDMsNyArMTIxOCwxMiBAQCB2b2lkIEhlYXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigp
CiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2Nrcygp
CiB7Ci0gICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2Rl
QmxvY2tzKHRoaXMpOworICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKHRoaXMpOworfQorCit2b2lkIEhlYXA6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2NrcygpCit7CisgICAgbV9jb2RlQmxvY2tzLT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygp
OwogfQogCiB2b2lkIEhlYXA6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90
aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgdm9pZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0Nv
ZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBo
YXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZp
bmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2
aXNpb24gMjA2NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBj
b25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9j
a3MoKS5zZXQoKTsKICAgICAgICAgCisgICAgICAgIEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCku
aXNNYXJraW5nKCkpOworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVl
OworICAgICAgICAKICAgICAgICAgY2hhciogcG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihw
YXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAgICAgICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEg
bGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAm
JiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4
aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8
Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2lu
dGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5p
c0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwcmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVy
c2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1BvaW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBm
dW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcg
KzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCogcG9pbnRlcikgewotICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikp
CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdW
ZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIpKQogICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRl
cik7CiAgICAgICAgIH07CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDExICs1Myw4IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAg
ICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVDaGVjayA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYg
KGJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGb3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBv
ZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYg
KGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCku
cmVzZXRNYXJraW5nVmVyc2lvbigpOwotICAgICAgICB9CisgICAgICAgIGlmIChibG9jaykKKyAg
ICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAg
KytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGlt
ZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91
YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAg
LTQzNiw3ICs0MzMsOCBAQCB2b2lkIE1hcmtlZEFsbG9jYXRvcjo6c3dlZXAoKQogewogICAgIG1f
dW5zd2VwdC5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewotICAg
ICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5zd2VlcCgpOworICAgICAgICAgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CisgICAgICAgICAgICBibG9jay0+
c3dlZXAoKTsKICAgICAgICAgfSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBNYXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBoZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDog
bV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENvbnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRW
ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChO
b3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRCbG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAg
CkBAIC0xMjUsNyArMTI2LDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lh
bGl6ZQogICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSAr
PSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAgICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CiAg
ICAgICAgICAgICAmJiAoKG1hcmtzTW9kZSA9PSBNYXJrc05vdFN0YWxlICYmIGJsb2NrLm1fbWFy
a3MuZ2V0KGkpKQotICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFz
TmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC0+Z2V0KGkpKSkpIHsKKyAgICAgICAg
ICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1f
bmV3bHlBbGxvY2F0ZWQuZ2V0KGkpKSkpIHsKICAgICAgICAgICAgIGlzRW1wdHkgPSBmYWxzZTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xNDgsNyArMTQ5LDcgQEAgRnJl
ZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIC8vIFdlIG9ubHkgd2Fu
dCB0byBkaXNjYXJkIHRoZSBuZXdseUFsbG9jYXRlZCBiaXRzIGlmIHdlJ3JlIGNyZWF0aW5nIGEg
RnJlZUxpc3QsCiAgICAgLy8gb3RoZXJ3aXNlIHdlIHdvdWxkIGxvc2UgaW5mb3JtYXRpb24gb24g
d2hhdCdzIGN1cnJlbnRseSBhbGl2ZS4KICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVl
TGlzdCAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQpCi0gICAgICAg
IG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOworICAgICAgICBtX2FsbG9jYXRlZFZlcnNpb24g
PSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVl
TGlzdDo6bGlzdChoZWFkLCBjb3VudCAqIGNlbGxTaXplKCkpOwogICAgIGlmIChzd2VlcE1vZGUg
PT0gU3dlZXBUb0ZyZWVMaXN0KQpAQCAtMjA3LDcgKzIwOCw3IEBAIEZyZWVMaXN0IE1hcmtlZEJs
b2NrOjpIYW5kbGU6OnN3ZWVwSGVscGUKIHRlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVt
cHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGU+CiBGcmVlTGlzdCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVw
TW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgaWYgKG1fbmV3bHlBbGxvY2F0ZWQpCisgICAgaWYgKGhh
c0FueU5ld2x5QWxsb2NhdGVkKCkpCiAgICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3
ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXds
eUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2Vl
cE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhh
dmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKIH0KQEAgLTI3NSw4ICsyNzYsOCBAQCB2b2lk
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nCiAgICAgLy8gYWxsb2NhdGVkIGZy
b20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5v
dGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdoYXQncyBsaXZlIHZzIGRlYWQuIAogICAgIAotICAg
IEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7Ci0gICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6
bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+KCk7CisgICAgbV9uZXdseUFs
bG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2Jq
ZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9uKCk7CiAKICAgICBTZXROZXdseUFsbG9jYXRlZEZ1
bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKQEAgLTI5NSwx
MCArMjk2LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKIHZv
aWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogewogICAgIGFs
bG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0aGlzLCBmYWxzZSk7Ci0gICAgbV9ibG9jay0+Y2xl
YXJNYXJrcygpOworICAgIG1fYmxvY2stPm1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX2Jsb2Nr
LT5jbGVhckhhc0FueU1hcmtlZCgpOworICAgIG1fYmxvY2stPm1fbWFya2luZ1ZlcnNpb24gPSBo
ZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKTsKICAgICBtX3dlYWtTZXQubGFz
dENoYW5jZVRvRmluYWxpemUoKTsKLQotICAgIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBt
X25ld2x5QWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVh
cCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRlZFZlcnNpb24oKTsKICAgICBzd2VlcCgpOwogfQog
CkBAIC0zMDcsNyArMzEwLDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1l
QWxsbwogICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKICAgICBB
U1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAotICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgewor
ICAgIGlmICghaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSkgewogICAgICAgICAvLyBUaGlzIG1lYW5z
IHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9j
YXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIH0KQEAgLTM0NiwyNCArMzQ5
LDY1IEBAIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmUKIHsKICAgICBB
U1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9u
KSkgewotICAgICAgICBjbGVhck1hcmtzKG1hcmtpbmdWZXJzaW9uKTsKLSAgICAgICAgLy8gVGhp
cyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBi
bG9jay4KLSAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNN
YXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICBpZiAoIWFyZU1hcmtzU3RhbGUo
bWFya2luZ1ZlcnNpb24pKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGhhbmRsZSgp
LmFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCgmaGFuZGxlKCkpCisgICAgICAgIHx8ICFtYXJrc0Nv
bnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpIHsKKyAgICAgICAgLy8g
V2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGJsb2NrIGlzIGZ1bGwgYW5kIGlzIGFscmVhZHkgcmVj
b2duaXplZCBhcyBzdWNoLCBvciB0aGF0IHRoZQorICAgICAgICAvLyBibG9jayBkaWQgbm90IHN1
cnZpdmUgdGhlIHByZXZpb3VzIEdDLiBTbywgd2UgY2FuIGNsZWFyIG1hcmsgYml0cyB0aGUgb2xk
IGZhc2hpb25lZAorICAgICAgICAvLyB3YXkuIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBz
dWNoIGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFsbG9jYXRlZCB3aXRoIGFuIHVwLXRvLQorICAgICAg
ICAvLyBkYXRlIHZlcnNpb24hIElmIGl0IGRvZXMsIHRoZW4gd2Ugd2FudCB0byBsZWF2ZSB0aGUg
bmV3bHlBbGxvY2F0ZWQgYWxvbmUsIHNpbmNlIHRoYXQKKyAgICAgICAgLy8gbWVhbnMgdGhhdCB3
ZSBoYWQgYWxsb2NhdGVkIGluIHRoaXMgcHJldmlvdXNseSBlbXB0eSBibG9jayBidXQgZGlkIG5v
dCBmaWxsIGl0IHVwLCBzbworICAgICAgICAvLyB3ZSBjcmVhdGVkIGEgbmV3bHlBbGxvY2F0ZWQu
CisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBIZWFw
VmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0gdm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmFsbG9j
YXRlZFZlcnNpb24oKTsKKyAgICAgICAgc2l6ZV90IGNvdW50OworICAgICAgICBpZiAoaGFuZGxl
KCkubV9hbGxvY2F0ZWRWZXJzaW9uID09IGFsbG9jYXRlZFZlcnNpb24pIHsKKyAgICAgICAgICAg
IC8vIE1lcmdlIHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBuZXdseUFsbG9jYXRlZC4gSWYg
d2UgZ2V0IHRoZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAgICAvLyB0aGVuIGludmFsaWRh
dGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICBjb3VudCA9
IGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWQubWVyZ2VDb3VudEFuZENsZWFyKG1fbWFya3MpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgY29udGVudHMgb2Yg
bmV3bHlBbGxvY2F0ZWQgd2l0aCBtYXJrZWQuIElmIHdlIGdldCB0aGUgZnVsbCBzZXQgb2YKKyAg
ICAgICAgICAgIC8vIGJpdHMgdGhlbiBpbnZhbGlkYXRlIG5ld2x5QWxsb2NhdGVkIGFuZCBzZXQg
YWxsb2NhdGVkLgorICAgICAgICAgICAgY291bnQgPSBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVk
LnNldENvdW50QW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjb3Vu
dCkKKyAgICAgICAgICAgIGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNl
OjpudWxsVmVyc2lvbjsKKyAgICAgICAgZWxzZSBpZiAoY291bnQgPT0gaGFuZGxlKCkuY2VsbHNQ
ZXJCbG9jaygpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzbid0IHN0cmljdGx5IG5lZWRlZCwg
YnV0IGl0J3MgY29uc2lzdGVudCB3aXRoIHdoYXQgdGhlIHJlc3Qgb2YgdGhlIEdDIGRvZXMuCisg
ICAgICAgICAgICAvLyBGSVhNRTogRXhwbG9yZSByZW1vdmluZyB0aGlzLgorICAgICAgICAgICAg
aGFuZGxlKCkuYWxsb2NhdG9yKCktPnNldElzQWxsb2NhdGVkKCZoYW5kbGUoKSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBoYW5kbGUoKS5tX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVs
bFZlcnNpb247CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaGFuZGxlKCkubV9hbGxvY2F0
ZWRWZXJzaW9uID0gYWxsb2NhdGVkVmVyc2lvbjsKICAgICB9CisgICAgY2xlYXJIYXNBbnlNYXJr
ZWQoKTsKKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIG1fbWFya2luZ1ZlcnNpb24g
PSBtYXJraW5nVmVyc2lvbjsKKyAgICAKKyAgICAvLyBUaGlzIG1lYW5zIHdlJ3JlIHRoZSBmaXJz
dCBvbmVzIHRvIG1hcmsgYW55IG9iamVjdCBpbiB0aGlzIGJsb2NrLgorICAgIGhhbmRsZSgpLmFs
bG9jYXRvcigpLT5hdG9taWNTZXRBbmRDaGVja0lzTWFya2luZ05vdEVtcHR5KCZoYW5kbGUoKSwg
dHJ1ZSk7CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQordm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpyZXNldEFsbG9jYXRlZCgpCiB7Ci0gICAgY2xlYXJNYXJrcyh2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSk7CisgICAgbV9uZXdseUFsbG9jYXRl
ZC5jbGVhckFsbCgpOworICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxs
VmVyc2lvbjsKIH0KIAotdm9pZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBt
YXJraW5nVmVyc2lvbikKK3ZvaWQgTWFya2VkQmxvY2s6OnJlc2V0TWFya3MoKQogewotICAgIG1f
bWFya3MuY2xlYXJBbGwoKTsKLSAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7Ci0gICAgbV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOwor
ICAgIC8vIFdlIHdhbnQgYWJvdXRUb01hcmtTbG93KCkgdG8gc2VlIHdoYXQgdGhlIG1hcmsgYml0
cyB3ZXJlIGFmdGVyIHRoZSBsYXN0IGNvbGxlY3Rpb24uIEl0IHVzZXMKKyAgICAvLyB0aGUgdmVy
c2lvbiBudW1iZXIgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgbWFya3MgaGF2aW5nIGFscmVh
ZHkgYmVlbiBzdGFsZSBiZWZvcmUKKyAgICAvLyBiZWdpbk1hcmtpbmcoKSwgb3IganVzdCBzdGFs
ZSBub3cgdGhhdCBiZWdpbk1hcmtpbmcoKSBidW1wZWQgdGhlIHZlcnNpb24uIElmIHdlIGhhdmUg
YSB2ZXJzaW9uCisgICAgLy8gd3JhcGFyb3VuZCwgdGhlbiB3ZSB3aWxsIGNhbGwgdGhpcyBtZXRo
b2QgYmVmb3JlIHJlc2V0dGluZyB0aGUgdmVyc2lvbiB0byBudWxsLiBXaGVuIHRoZQorICAgIC8v
IHZlcnNpb24gaXMgbnVsbCwgYWJvdXRUb01hcmtTbG93KCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUg
bWFya3Mgd2VyZSBub3Qgc3RhbGUgYXMgb2YgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCku
IEhlbmNlIHRoZSBuZWVkIHRvIHdoaXAgdGhlIG1hcmtzIGludG8gc2hhcGUuCisgICAgaWYgKGFy
ZU1hcmtzU3RhbGUoKSkKKyAgICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fbWFya2lu
Z1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECkBAIC00MjUsNiArNDY5LDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVt
b3ZlRnJvbUFsbG8KICAgICBtX2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7CiB9CiAKK3Zv
aWQgTWFya2VkQmxvY2s6OnNldE5lZWRzRGVzdHJ1Y3Rpb24oKQoreworICAgIG1fbmVlZHNEZXN0
cnVjdGlvbiA9IGhhbmRsZSgpLm5lZWRzRGVzdHJ1Y3Rpb24oKTsKK30KKwogdm9pZCBNYXJrZWRC
bG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgc2l6ZV90IGluZGV4KQogewogICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwpAQCAtNDQyLDEwICs0OTEsOSBAQCB2b2lkIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhCiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2lu
ZCAhPSBIZWFwQ2VsbDo6SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0
ZXMuZGVzdHJ1Y3Rpb24gPT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiAgICAgCi0gICAgYmxv
Y2soKS5tX25lZWRzRGVzdHJ1Y3Rpb24gPSBuZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgYmxvY2so
KS5zZXROZWVkc0Rlc3RydWN0aW9uKCk7CiAgICAgCi0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9j
ayA9IE1hcmtlZFNwYWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFy
a0NvdW50QmlhcyA9IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2Vs
bHNQZXJCbG9jayk7CisgICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1h
cmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8g
VGhlIG1hcmsgY291bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFu
Z2UuCiAgICAgUkVMRUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJs
ZT4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKQEAgLTQ2NiwxMiArNTE0
LDEyIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUEKIAogYm9vbCBN
YXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAg
cmV0dXJuIGlzTGl2ZSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwg
Y2VsbCk7CisgICAgcmV0dXJuIGlzTGl2ZShzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFj
ZSgpLT5pc01hcmtpbmcoKSwgY2VsbCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6
aXNMaXZlQ2VsbChjb25zdCB2b2lkKiBwKQogewotICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpLCBwKTsKKyAgICByZXR1cm4gaXNM
aXZlQ2VsbChzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwg
cCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIE1hcmtl
ZEFsbG9jYXRvcjsKK2NsYXNzIE1hcmtlZFNwYWNlOwogCiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRz
OwogdHlwZWRlZiB1aW50MzJfdCBIZWFwVmVyc2lvbjsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJs
aWM6CiAKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAg
ICAgSGVhcCogaGVhcCgpIGNvbnN0OworICAgICAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNl
KCkgY29uc3Q7CiAgICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFr
U2V0KCk7CiAgICAgICAgICAgICAKQEAgLTE0MSwxMSArMTQzLDkgQEAgcHVibGljOgogICAgICAg
ICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgICAgIEZyZWVMaXN0
IHJlc3VtZUFsbG9jYXRpbmcoKTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEg
YmxvY2sgZm9yIHNvbWUgbm9uLWNvbGxlY3Rpb24gcmVsYXRlZCBwdXJwb3NlLgogICAgICAgICAg
ICAgCi0gICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgIm5ld2x5IGFsbG9jYXRlZCIgYml0
bWFwIHdhcyBub24tbnVsbCAKLSAgICAgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJl
ZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQo
KTsKLSAgICAgICAgICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKKyAgICAgICAgaW5s
aW5lIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IEFs
bG9jYXRvckF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rp
b25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlv
bigpIGNvbnN0OwpAQCAtMTUzLDkgKzE1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAg
ICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uLCBjb25zdCBIZWFwQ2VsbCopOwotICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhl
YXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKik7CisgICAgICAgIAorICAgICAg
ICBpbmxpbmUgYm9vbCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNN
YXJraW5nLCBjb25zdCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxs
KEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9pZCop
OwogCiAgICAgICAgIGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wg
aXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CkBAIC0xNjQsOCArMTY0LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgdm9pZCBzZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQg
Y2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBib29s
IGhhc0FueU5ld2x5QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVk
OyB9Ci0gICAgICAgICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkVmVyc2lvbjsgfQorICAgICAgICAKKyAgICAgICAg
aW5saW5lIGJvb2wgaXNOZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3Q7CisgICAgICAgIAorICAg
ICAgICBpbmxpbmUgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpOworICAgICAgICB2b2lkIHJl
c2V0QWxsb2NhdGVkKCk7CisgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9y
RWFjaExpdmVDZWxsKGNvbnN0IEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSBJdGVyYXRpb25TdGF0dXMgZm9yRWFjaERlYWRDZWxsKGNvbnN0IEZ1
bmN0b3ImKTsKQEAgLTE4NSw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIEhhbmRsZShIZWFwJiwgdm9pZCopOwotICAgICAgICAgICAgCisgICAgICAg
IAogICAgICAgICB0ZW1wbGF0ZTxEZXN0cnVjdGlvbk1vZGU+CiAgICAgICAgIEZyZWVMaXN0IHN3
ZWVwSGVscGVyU2VsZWN0U2NyaWJibGVNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAgICAg
ICAgICAgICAKQEAgLTIyMyw3ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtX2F0
b21zUGVyQ2VsbCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAg
ICAgc2l6ZV90IG1fZW5kQXRvbSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkg
fTsgLy8gVGhpcyBpcyBhIGZ1enp5IGVuZC4gQWx3YXlzIHRlc3QgZm9yIDwgbV9lbmRBdG9tLgog
ICAgICAgICAgICAgCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXVEY6OkJpdG1hcDxhdG9tc1Bl
ckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKKyAgICAgICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJC
bG9jaz4gbV9uZXdseUFsbG9jYXRlZDsKICAgICAgICAgICAgIAogICAgICAgICBBbGxvY2F0b3JB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICAgICAgYm9vbCBtX2lzRnJlZUxpc3RlZCB7IGZh
bHNlIH07CkBAIC0yMzEsNiArMjM2LDggQEAgcHVibGljOgogICAgICAgICBNYXJrZWRBbGxvY2F0
b3IqIG1fYWxsb2NhdG9yIHsgbnVsbHB0ciB9OwogICAgICAgICBzaXplX3QgbV9pbmRleCB7IHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsKICAgICAgICAgV2Vha1NldCBtX3dl
YWtTZXQ7CisgICAgICAgIAorICAgICAgICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb247
CiAgICAgICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRyIH07
CiAgICAgfTsKQEAgLTI0MCw2ICsyNDcsOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5kbGUo
KTsKICAgICAgICAgCiAgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhlYXAo
KSBjb25zdDsKKyAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAgICBz
dGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFya2Vk
QmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODcsMTAgQEAgcHVibGlj
OgogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X25lZWRzRGVzdHJ1Y3Rpb247IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtpbmdW
ZXJzaW9uKCk7CisgICAgLy8gVGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2UgaXQg
YXMgYSBuby1vcCB0aGF0IHRvdWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAgIHZv
aWQgc2V0TmVlZHNEZXN0cnVjdGlvbigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJrcygpOwog
ICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNr
ID0gYXRvbVNpemUgLSAxOwpAQCAtMjg5LDEzICszMDEsMTMgQEAgcHJpdmF0ZToKICAgICBBdG9t
KiBhdG9tcygpOwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9pZCBjbGVh
ck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFySGFzQW55
TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOworICAgIAorICAgIGlu
bGluZSBib29sIG1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uKTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaywg
V1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4gbV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9uOwogICAg
IExvY2sgbV9sb2NrOwpAQCAtNTIxLDI2ICs1MzMsMTcgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OnRlc3RBbmRTZXRNYXJrZQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgcmV0dXJuIG1fbmV3bHlBbGxv
Y2F0ZWQtPmdldChtX2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9uZXdseUFs
bG9jYXRlZC5nZXQobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKIGlubGluZSB2b2lkIE1h
cmtlZEJsb2NrOjpIYW5kbGU6OnNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiB7Ci0g
ICAgbV9uZXdseUFsbG9jYXRlZC0+c2V0KG1fYmxvY2stPmF0b21OdW1iZXIocCkpOworICAgIG1f
bmV3bHlBbGxvY2F0ZWQuc2V0KG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCiBpbmxpbmUg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQq
IHApCiB7Ci0gICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51bWJlcihw
KSk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3bHlBbGxv
Y2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1fbmV3bHlB
bGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXIobV9ibG9jay0+YXRvbU51bWJl
cihwKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qgdm9pZCog
cCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDM0IEBACiAK
ICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgor
I2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24s
IGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmNlbGxzUGVyQmxvY2soKQoreworICAgIHJldHVybiBNYXJrZWRTcGFjZTo6YmxvY2tQYXls
b2FkIC8gY2VsbFNpemUoKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om1hcmtzQ29u
dmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQorewor
ICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGVzZSBpcyB0cnVlOgorICAgIC8v
IC0gV2UganVzdCBjcmVhdGVkIHRoZSBibG9jayBhbmQgc28gdGhlIGJpdHMgYXJlIGNsZWFyIGFs
cmVhZHkuCisgICAgLy8gLSBUaGlzIGJsb2NrIGhhcyBvYmplY3RzIG1hcmtlZCBkdXJpbmcgdGhl
IGxhc3QgR0MsIGFuZCBzbyBpdHMgdmVyc2lvbiB3YXMgdXAtdG8tZGF0ZSBqdXN0CisgICAgLy8g
ICBiZWZvcmUgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBkaWQgYmVnaW5NYXJraW5nKCkuIFRoaXMg
bWVhbnMgdGhhdCBhbnkgb2JqZWN0cyB0aGF0IGhhdmUgCisgICAgLy8gICB0aGVpciBtYXJrIGJp
dCBzZXQgYXJlIHZhbGlkIG9iamVjdHMgdGhhdCB3ZXJlIG5ldmVyIGRlbGV0ZWQsIGFuZCBzbyBh
cmUgY2FuZGlkYXRlcyBmb3IKKyAgICAvLyAgIG1hcmtpbmcgaW4gYW55IGNvbnNlcnZhdGl2ZSBz
Y2FuLiBVc2luZyBvdXIgamFyZ29uLCB0aGV5IGFyZSAibGl2ZSIuCisgICAgLy8gLSBXZSBkaWQg
fjJeMzIgY29sbGVjdGlvbnMgYW5kIHJvdGF0ZWQgdGhlIHZlcnNpb24gYmFjayB0byBudWxsLCBz
byB3ZSBuZWVkZWQgdG8gaGFyZC1yZXNldAorICAgIC8vICAgZXZlcnl0aGluZy4gSWYgdGhlIG1h
cmtzIGhhZCBiZWVuIHN0YWxlLCB3ZSB3b3VsZCBoYXZlIGNsZWFyZWQgdGhlbS4gU28sIHdlIGNh
biBiZSBzdXJlIHRoYXQKKyAgICAvLyAgIGFueSBzZXQgbWFyayBiaXQgcmVmbGVjdHMgb2JqZWN0
cyBtYXJrZWQgZHVyaW5nIGxhc3QgR0MsIGkuZS4gImxpdmUiIG9iamVjdHMuCisgICAgLy8gSXQg
d291bGQgYmUgYWJzdXJkIHRvIHVzZSB0aGlzIG1ldGhvZCB3aGVuIG5vdCBjb2xsZWN0aW5nLCBz
aW5jZSB0aGlzIHNwZWNpYWwgIm9uZSB2ZXJzaW9uCisgICAgLy8gYmFjayIgc3RhdGUgb25seSBt
YWtlcyBzZW5zZSB3aGVuIHdlJ3JlIGluIGEgY29uY3VycmVudCBjb2xsZWN0aW9uIGFuZCBoYXZl
IHRvIGJlCisgICAgLy8gY29uc2VydmF0aXZlLgorICAgIHJldHVybiBtX21hcmtpbmdWZXJzaW9u
ID09IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbgorICAgICAgICB8fCBNYXJrZWRTcGFjZTo6bmV4
dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbikgPT0gbWFya2luZ1ZlcnNpb247Cit9CisKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVy
c2lvbiwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewogICAgIEFTU0VS
VCghaXNGcmVlTGlzdGVkKCkpOwogICAgIApAQCAtMzksMjIgKzYzLDM2IEBAIGlubGluZSBib29s
IE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSgKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOwotICAg
IAogICAgIGlmIChhbGxvY2F0b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAotICAgIGlmIChibG9jay5hcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9u
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMt
PmJsb2NrKCk7CisgICAgCisgICAgaWYgKGJsb2NrLmFyZU1hcmtzU3RhbGUoKSkgeworICAgICAg
ICBpZiAoIWlzTWFya2luZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYg
KCFibG9jay5tYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgcmV0dXJuIGJsb2NrLmlz
TWFya2VkKGNlbGwpOworICAgIHJldHVybiBibG9jay5tX21hcmtzLmdldChibG9jay5hdG9tTnVt
YmVyKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZl
Q2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK2lubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25zdCB2b2lkKiBwKQogewogICAgIGlmICghbV9ibG9j
ay0+aXNBdG9tKHApKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzTGl2ZSht
YXJraW5nVmVyc2lvbiwgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7CisgICAgcmV0
dXJuIGlzTGl2ZShtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBzdGF0aWNfY2FzdDxjb25zdCBI
ZWFwQ2VsbCo+KHApKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNO
ZXdseUFsbG9jYXRlZFN0YWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hbGxvY2F0ZWRWZXJz
aW9uICE9IHNwYWNlKCktPmFsbG9jYXRlZFZlcnNpb24oKTsKK30KKworaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiAh
aXNOZXdseUFsbG9jYXRlZFN0YWxlKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9y
PgpAQCAtODcsOSArMTI1LDE5IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6
OkhhbmQKICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotaW5saW5l
IHZvaWQgTWFya2VkQmxvY2s6OnJlc2V0TWFya2luZ1ZlcnNpb24oKQoraW5saW5lIEhlYXAqIE1h
cmtlZEJsb2NrOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7Cit9CisK
K2lubGluZSBNYXJrZWRTcGFjZSogTWFya2VkQmxvY2s6OnNwYWNlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gJmhlYXAoKS0+b2JqZWN0U3BhY2UoKTsKK30KKworaW5saW5lIE1hcmtlZFNwYWNlKiBN
YXJrZWRCbG9jazo6SGFuZGxlOjpzcGFjZSgpIGNvbnN0CiB7Ci0gICAgbV9tYXJraW5nVmVyc2lv
biA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKKyAgICByZXR1cm4gJmhlYXAoKS0+b2JqZWN0
U3BhY2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1
MSwyOSArNDUxLDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKICAgICAgICAgfSk7CiB9
CiAKLXZvaWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGZvckVh
Y2hBbGxvY2F0b3IoCi0gICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSog
YmxvY2sgPSBhbGxvY2F0b3IudGFrZUxhc3RBY3RpdmVCbG9jaygpKQotICAgICAgICAgICAgICAg
IGJsb2NrLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xh
cmdlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tp
XS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwotCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
LSAgICAgICAgZm9yRWFjaEJsb2NrKAotICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgewotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9j
ay0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCi0gICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5p
c05ld2x5QWxsb2NhdGVkKCkpOwotICAgIH0KLX0KLQogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5N
YXJraW5nKCkKIHsKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVs
bENvbGxlY3Rpb24pIHsKQEAgLTQ4MywxNiArNDYwLDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29u
dGludWU7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0gbmV4
dFZlcnNpb24obV9tYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtF
TFkobV9tYXJraW5nVmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8v
IE9oIG5vISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFs
bCBibG9jayB2ZXJzaW9ucyB0byBudWxsLgorICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNp
b24obV9tYXJraW5nVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CiAgICAgICAgICAgICBm
b3JFYWNoQmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBo
YW5kbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya2lu
Z1ZlcnNpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFy
a3MoKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
bV9tYXJraW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOworICAgICAg
ICAKICAgICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxs
b2NhdGlvbnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQpAQCAtNTEx
LDYgKzQ4NywyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogCiB2b2lkIE1h
cmtlZFNwYWNlOjplbmRNYXJraW5nKCkKIHsKKyAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24o
bV9hbGxvY2F0ZWRWZXJzaW9uKSA9PSBpbml0aWFsVmVyc2lvbikpIHsKKyAgICAgICAgZm9yRWFj
aEJsb2NrKAorICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUpIHsK
KyAgICAgICAgICAgICAgICBoYW5kbGUtPnJlc2V0QWxsb2NhdGVkKCk7CisgICAgICAgICAgICB9
KTsKKyAgICB9CisgICAgICAgIAorICAgIG1fYWxsb2NhdGVkVmVyc2lvbiA9IG5leHRWZXJzaW9u
KG1fYWxsb2NhdGVkVmVyc2lvbik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9sYXJn
ZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxsb2NhdGlv
bnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXds
eUFsbG9jYXRlZCgpOworCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgZm9y
IChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCisgICAg
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5QWxs
b2NhdGVkKCkpOworICAgIH0KKwogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAgICAgIFsmXSAo
TWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAg
ICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTMg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNzZXMgPSBsYXJn
ZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBIZWFwVmVyc2lvbiBu
dWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2NhdGVkIGJsb2Nr
cy4KLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAxOyAvLyBU
aGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICBzdGF0aWMgY29u
c3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAyOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRo
ZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4gU2V0IHRvIG1ha2Ugc3VyZSB0aGF0IG5leHRWZXJzaW9u
KG51bGxWZXJzaW9uKSAhPSBpbml0aWFsVmVyc2lvbi4KICAgICAKLSAgICBIZWFwVmVyc2lvbiBu
ZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHN0YXRpYyBIZWFwVmVyc2lvbiBu
ZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQogICAgIHsKICAgICAgICAgdmVyc2lvbisr
OwogICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKLSAgICAgICAgICAgIHZlcnNp
b24rKzsKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbml0aWFsVmVyc2lvbjsKICAgICAgICAgcmV0
dXJuIHZlcnNpb247CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE3MSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBIZWFwVmVyc2lv
biBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb247IH0KKyAg
ICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0
ZWRWZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdl
QWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1
bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7IH0KQEAgLTIxNyw2ICsyMTgsNyBAQCBwcml2
YXRlOgogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNp
b24geyBpbml0aWFsVmVyc2lvbiB9OworICAgIEhlYXBWZXJzaW9uIG1fYWxsb2NhdGVkVmVyc2lv
biB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90IG1fY2FwYWNpdHk7CiAgICAgYm9vbCBt
X2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtpbmcgeyBmYWxzZSB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24gMjA2NzU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTEsOCArMTkxLDYgQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5k
QXBwZW5kVG9NYQogICAgIHZhbGlkYXRlKGNlbGwpOwogI2VuZGlmCiAgICAgCi0gICAgLy9kYXRh
TG9nKCIgICAgTWFya2luZyAiLCBSYXdQb2ludGVyKGNlbGwpLCAiXG4iKTsKLSAgICAKICAgICBp
ZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgc2V0TWFya2VkQW5kQXBwZW5k
VG9NYXJrU3RhY2soY2VsbC0+bGFyZ2VBbGxvY2F0aW9uKCksIGNlbGwpOwogICAgIGVsc2UKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmls
ZXIuY3BwCShyZXZpc2lvbiAyMDY3NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhl
YXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkluZGV4OiBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2
aXNpb24gMjA2NzU1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw1MCBAQAorMjAxNi0xMC0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgorCisgICAgICAgIE1hcmtlZEJsb2NrIHNob3VsZCBrbm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2
ZSBkdXJpbmcgbWFya2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGRvZXMgdHdvIHRoaW5ncy4gRmlyc3QsIEkgbm90aWNlZCB0
aGF0IHRoZSBhdG9taWMgbW9kZSB3YXMgdXNlbGVzcy4gSXQgb25seSBhZmZlY3RzIHRoZQorICAg
ICAgICBjb25jdXJyZW50VGVzdEFuZFNldHxDbGVhciBtZXRob2RzLCBhbmQgdGhlIG9ubHkgY2Fs
bGVyIG9mIHRob3NlIG1ldGhvZHMgZW5hYmxlZCBhdG9taWNpdHkuCisgICAgICAgIFNlY29uZCwg
dGhpcyBhZGRzIG5ldyBwcmltaXRpdmVzIHRoYXQgZG8gYSBidW5jaCBvZiB0aGluZ3MgYXQgb25j
ZToKKyAgICAgICAgCisgICAgICAgIC0gbWVyZ2VDb3VudEFuZENsZWFyOiBtZXJnZXMgaW4gdGhl
IGNvbnRlbnRzIG9mIGFub3RoZXIgYml0bWFwLCB3aGlsZSBjbGVhcmluZyB0aGF0IGJpdG1hcCwK
KyAgICAgICAgICBhbmQgY291bnRpbmcgdGhlIHRoZSBudW1iZXIgb2Ygc2V0IGJpdHMgYXMgYSBy
ZXN1bHQuCisgICAgICAgIAorICAgICAgICAtIHNldENvdW50QW5kQ2xlYXI6IHNldHMgdGhpcyBi
aXRtYXAgdG8gaGF2ZSB0aGUgY29udGVudHMgb2YgYW5vdGhlciBiaXRtYXAsIHdoaWxlIGNsZWFy
aW5nCisgICAgICAgICAgdGhhdCBiaXRtYXAsIGFuZCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHNl
dCBiaXRzLgorICAgICAgICAKKyAgICAgICAgLSBzZXRBbmRDbGVhcjogc2V0cyB0aGlzIGJpdG1h
cCB0byBoYXZlIHRoZSBjb250ZW50cyBvZiBhbm90aGVyIGJpdG1hcCB3aGlsZSBjbGVhcmluZyB0
aGF0CisgICAgICAgICAgYml0bWFwLgorICAgICAgICAKKyAgICAgICAgSXQncyBpbXBvcnRhbnQg
Zm9yIHRoZXNlIHRvIGJlIGZhc3QsIHNpbmNlIHRoZSBHQyB1c2VzIHRoZW0gZHVyaW5nIG1hcmtp
bmcuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29y
ZFR5cGU+OjpCaXRtYXApOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmdldCk6CisgICAgICAg
IChXVEY6OldvcmRUeXBlPjo6c2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojp0ZXN0QW5k
U2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojp0ZXN0QW5kQ2xlYXIpOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29y
ZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+
OjpjbGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXJBbGwpOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpmaW5kUnVuT2ZaZXJvcyk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQpOgor
ICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpXb3JkVHlw
ZT46OmlzRnVsbCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6bWVyZ2UpOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmZpbHRlcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZXhjbHVk
ZSk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgIChX
VEY6OldvcmRUeXBlPjo6bWVyZ2VDb3VudEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+OjpzZXRDb3VudEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpzZXRBbmRD
bGVhcik6CisgICAgICAgIChXVEY6Oj0pOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omhhc2gp
OgorCiAyMDE2LTEwLTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIEtleWJvYXJkRXZlbnQua2V5IGF0dHJpYnV0ZQpJbmRleDogU291
cmNlL1dURi93dGYvQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0bWFw
LmgJKHJldmlzaW9uIDIwNjc1NSkKKysrIFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxNiArMjcsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBCaXRt
YXBBdG9taWNNb2RlIHsKLSAgICAvLyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IGJl
aGF2ZSBqdXN0IGxpa2UgdGVzdEFuZFNldC4KLSAgICBCaXRtYXBOb3RBdG9taWMsCi0KLSAgICAv
LyBUaGlzIG1ha2VzIGNvbmN1cnJlbnRUZXN0QW5kU2V0IHVzZSBjb21wYXJlQW5kU3dhcCwgc28g
dGhhdCBpdCdzCi0gICAgLy8gYXRvbWljIGV2ZW4gd2hlbiB1c2VkIGNvbmN1cnJlbnRseS4KLSAg
ICBCaXRtYXBBdG9taWMKLX07Ci0KLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBB
dG9taWNNb2RlIGF0b21pY01vZGUgPSBCaXRtYXBOb3RBdG9taWMsIHR5cGVuYW1lIFdvcmRUeXBl
ID0gdWludDMyX3Q+Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGUgPSB1aW50MzJfdD4KIGNsYXNzIEJpdG1hcCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgCkBAIC01OSw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbmV4dFBvc3Np
Ymx5VW5zZXQoc2l6ZV90KSBjb25zdDsKICAgICB2b2lkIGNsZWFyKHNpemVfdCk7CiAgICAgdm9p
ZCBjbGVhckFsbCgpOwotICAgIGludDY0X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90KSBjb25zdDsK
LSAgICBzaXplX3QgY291bnQoc2l6ZV90ID0gMCkgY29uc3Q7CisgICAgaW50NjRfdCBmaW5kUnVu
T2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdDsKKyAgICBzaXplX3QgY291bnQoc2l6ZV90
IHN0YXJ0ID0gMCkgY29uc3Q7CiAgICAgc2l6ZV90IGlzRW1wdHkoKSBjb25zdDsKICAgICBzaXpl
X3QgaXNGdWxsKCkgY29uc3Q7CiAgICAgCkBAIC03MSw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hTZXRCaXQoY29uc3QgRnVu
YyYpIGNvbnN0OwogICAgIAorICAgIHNpemVfdCBtZXJnZUNvdW50QW5kQ2xlYXIoQml0bWFwJik7
CisgICAgc2l6ZV90IHNldENvdW50QW5kQ2xlYXIoQml0bWFwJik7CisgICAgdm9pZCBzZXRBbmRD
bGVhcihCaXRtYXAmKTsKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQml0bWFwJikg
Y29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIApA
QCAtOTAsMjYgKzg1LDI2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxXb3JkVHlwZSwgd29y
ZHM+IGJpdHM7CiB9OwogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWlj
TW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpCaXRtYXAoKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OkJpdG1hcCgpCiB7CiAgICAgY2xlYXJBbGwoKTsKIH0KIAotdGVtcGxhdGU8c2l6
ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29y
ZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5
cGU+OjpnZXQoc2l6ZV90IG4pIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlw
ZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+
OjpnZXQoc2l6ZV90IG4pIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXpl
XSAmIChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXQo
c2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4p
CiB7CiAgICAgYml0c1tuIC8gd29yZFNpemVdIHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNN
b2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUpCiAgICAgICAgIHNldChuKTsKQEAgLTExNyw4ICsxMTIsOCBAQCBpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgICAgIGNsZWFyKG4pOwogfQog
Ci10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2Rl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9t
aWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMTI3LDggKzEyMiw4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RB
bmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RB
bmRDbGVhcihzaXplX3QgbikKIHsKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29y
ZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTEzNywxNCArMTMy
LDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6
ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+Citp
bmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFu
ZFNldChzaXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMp
Ci0gICAgICAgIHJldHVybiB0ZXN0QW5kU2V0KG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUg
PT0gQml0bWFwQXRvbWljKTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUg
d29yZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlw
ZSogd29yZFB0ciA9IGJpdHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNTcsMTQgKzE0Nyw5IEBAIGlu
bGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBi
b29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIo
c2l6ZV90IG4pCiB7Ci0gICAgaWYgKGF0b21pY01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAg
ICAgICByZXR1cm4gdGVzdEFuZENsZWFyKG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0g
Qml0bWFwQXRvbWljKTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29y
ZFNpemUpOwogICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSog
d29yZFB0ciA9IGJpdHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNzcsMjggKzE2MiwyOCBAQCBpbmxp
bmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZGUsIFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0g
Jj0gfihvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNsZWFy
QWxsKCkKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lu
bGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAg
ICBtZW1zZXQoYml0cy5kYXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKLXRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdv
cmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29y
ZFR5cGU+OjpuZXh0UG9zc2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkg
Y29uc3QKIHsKICAgICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1
cm4gKChzdGFydCAvIHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0
ICsgMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVu
TGVuZ3RoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1
bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKIHsKICAgICBpZiAoIXJ1bkxlbmd0aCkg
CiAgICAgICAgIHJ1bkxlbmd0aCA9IDE7IApAQCAtMjE3LDggKzIwMiw4IEBAIGlubGluZSBpbnQ2
NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWMKICAgICByZXR1cm4gLTE7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
ZSwgV29yZFR5cGU+Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXpl
X3QgcmVzdWx0ID0gMDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkg
ewpAQCAtMjMwLDggKzIxNSw4IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY00KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0
eSgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
aWYgKGJpdHNbaV0pCkBAIC0yMzksOCArMjI0LDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0
bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3Qg
Yml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KLWlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBl
Pjo6aXNGdWxsKCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBX
b3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNG
dWxsKCkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAg
ICAgICAgIGlmICh+Yml0c1tpXSkKQEAgLTI0OCwzMCArMjMzLDMwIEBAIGlubGluZSBzaXplX3Qg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxh
dGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5h
bWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwg
V29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6bWVyZ2UoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0
c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFw
U2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90
aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
Yml0c1tpXSAmPSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmV4Y2x1ZGUo
Y29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4
Y2x1ZGUoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYg
ZnVuYykgY29uc3QKK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZv
ckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07
CkBAIC0yODYsOCArMjcxLDM5IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9t
aWNNb2QKICAgICB9CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9t
aWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFw
PGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRt
YXAmIG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJn
ZUNvdW50QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBzaXplX3QgcmVzdWx0ID0gMDsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKKyAgICAgICAgcmVzdWx0
ICs9IFdURjo6Yml0Q291bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJpdHNbaV0gfD0gb3RoZXIu
Yml0c1tpXSkpOworICAgICAgICBvdGhlci5iaXRzW2ldID0gMDsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRDb3Vu
dEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBX
VEY6OmJpdENvdW50KHN0YXRpY19jYXN0PHVuc2lnbmVkPihiaXRzW2ldID0gb3RoZXIuYml0c1tp
XSkpOworICAgICAgICBvdGhlci5iaXRzW2ldID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgor
aW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0QW5kQ2xlYXIoQml0
bWFwJiBvdGhlcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsK
KyAgICAgICAgYml0c1tpXSA9IG90aGVyLmJpdHNbaV07CisgICAgICAgIG90aGVyLmJpdHNbaV0g
PSAwOworICAgIH0KK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0
b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBpZiAoYml0c1tpXSAhPSBvdGhlci5iaXRzW2ld
KQpAQCAtMjk2LDE0ICszMTIsMTQgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0
b21pY01vZAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om9wZXJhdG9y
IT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBC
aXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHVu
c2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Omhhc2goKSBj
b25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhhc2goKSBjb25zdAog
ewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291030</attachid>
            <date>2016-10-08 16:30:47 -0700</date>
            <delta_ts>2016-10-11 15:37:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58762</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2OTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBA
CisyMDE2LTEwLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2sgc2hvdWxkIGtub3cgd2hhdCBvYmplY3RzIGFyZSBsaXZlIGR1cmluZyBtYXJr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIz
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB3ZSB3b3VsZCBmb3JnZXQgd2hpY2ggb2JqZWN0cyBhcmUg
bGl2ZSB0aGUgbW9tZW50IHdlIHN0YXJ0ZWQgY29sbGVjdGlvbi4KKyAgICAgICAgVGhhdCdzIGJl
Y2F1c2UgdGhlIGZsaXAgYXQgdGhlIGJlZ2lubmluZyBjbGVhcnMgYWxsIG1hcmsgYml0cy4KKyAg
ICAgICAgCisgICAgICAgIEJ1dCB3ZSBhbHJlYWR5IGhhdmUgYSBmYWNpbGl0eSBmb3IgdHJhY2tp
bmcgb2JqZWN0cyB0aGF0IGFyZSBsaXZlLWJ1dC1ub3QtbWFya2VkLiBJdCdzIGNhbGxlZAorICAg
ICAgICBuZXdseUFsbG9jYXRlZC4gU28sIGluc3RlYWQgb2YgY2xlYXJpbmcgbWFyayBiaXRzLCB3
ZSB3YW50IHRvIGp1c3QgdHJhbnNmZXIgdGhlbSB0bworICAgICAgICBuZXdseUFsbG9jYXRlZC4g
VGhlbiB3ZSB3YW50IHRvIGNsZWFyIGFsbCBuZXdseUFsbG9jYXRlZCBhZnRlciBHQy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyBzdWNoIGFuIGFwcHJvYWNoLCBhbG9uZyB3aXRo
IGEgdmVyc2lvbmluZyBvcHRpbWl6YXRpb24gZm9yIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBJ
bnN0ZWFkIG9mIHdhbGtpbmcgdGhlIHdob2xlIGhlYXAgdG8gY2xlYXIgbmV3bHlBbGxvY2F0ZWQg
Yml0cyBhdCB0aGUgZW5kIG9mIHRoZSBHQywgd2UgYnVtcAorICAgICAgICB0aGUgYWxsb2NhdGVk
VmVyc2lvbiwgd2hpY2ggY2F1c2VzIE1hcmtlZEJsb2NrIHRvIHRyZWF0IG5ld2x5QWxsb2NhdGVk
IGFzIGlmIGl0IHdhcyBjbGVhci4KKyAgICAgICAgCisgICAgICAgIFdlIGNvdWxkIGhhdmUgZXZl
biBhdm9pZGVkIGFsbG9jYXRpbmcgbmV3bHlBbGxvY2F0ZWQgaW4gbW9zdCBjYXNlcywgc2luY2Ug
ZW1waXJpY2FsbHkgbW9zdAorICAgICAgICBibG9ja3MgYXJlIGVpdGhlciBjb21wbGV0ZWx5IGVt
cHR5IG9yIGNvbXBsZXRlbHkgZnVsbC4gQW4gZWFybGllciB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gg
ZGlkCisgICAgICAgIHRoaXMsIGJ1dCBpdCB3YXMgbm90IGJldHRlciB0aGFuIHRoaXMgcGF0Y2gu
IEluIGZhY3QsIGl0IHNlZW1lZCB0byBhY3R1YWxseSBiZSB3b3JzZSBmb3IgUExUCisgICAgICAg
IGFuZCBtZW1idXN0ZXIuCisgICAgICAgIAorICAgICAgICBUbyB2YWxpZGF0ZSB0aGlzIGNoYW5n
ZSwgd2Ugbm93IHJ1biB0aGUgY29uc2VydmF0aXZlIHNjYW4gYWZ0ZXIgdGhlIGJlZ2luTWFya2lu
ZyBmbGlwLiBBbmQgaXQKKyAgICAgICAgdG90YWxseSB3b3JrcyEKKyAgICAgICAgCisgICAgICAg
IFRoaXMgaXMgYSBodWdlIHN0ZXAgdG93YXJkcyBjb25jdXJyZW50IEdDLiBJdCBtZWFucyB0aGF0
IHdlIG91Z2h0IHRvIGJlIGFibGUgdG8gcnVuIHRoZQorICAgICAgICBhbGxvY2F0b3Igd2hpbGUg
bWFya2luZy4gU2luY2Ugd2UgYWxyZWFkeSBzZXBhcmF0ZWx5IG1hZGUgaXQgcG9zc2libGUgdG8g
cnVuIHRoZSBiYXJyaWVyCisgICAgICAgIHdoaWxlIG1hcmtpbmcsIHRoaXMgbWVhbnMgdGhhdCB3
ZSdyZSBwcmV0dHkgbXVjaCByZWFkeSBmb3Igc29tZSBzZXJpb3VzIGNvbmN1cnJlbmN5IGFjdGlv
bi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYXBwZWFycyB0byBiZSBwZXJmLW5ldXRyYWwgYW5k
IHNwYWNlLW5ldXRyYWwuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6bWFy
ayk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tTZXQuY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja1NldDo6Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmcpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQ29kZUJsb2NrU2V0Lmg6CisgICAgICAg
ICogaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2tTZXQ6Om1hcmspOgorICAgICAgICAqIGhlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6
CisgICAgICAgIChKU0M6OkhlYXA6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNvbGxlY3RJbXBsKToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5
RXhlY3V0aW5nQ29kZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyQ3VycmVudGx5
RXhlY3V0aW5nQ29kZUJsb2Nrcyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICog
aGVhcC9IZWFwVXRpbC5oOgorICAgICAgICAoSlNDOjpIZWFwVXRpbDo6ZmluZEdDT2JqZWN0UG9p
bnRlcnNGb3JNYXJraW5nKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6aXNQYWdlZE91dCk6CisgICAgICAgICogaGVh
cC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Okhh
bmRsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2Vs
ZWN0SGFzTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxl
OjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omxh
c3RDaGFuY2VUb0ZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
cmVzdW1lQWxsb2NhdGluZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphYm91dFRvTWFy
a1Nsb3cpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpyZXNldEFsbG9jYXRl
ZCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpyZXNldE1hcmtzKToKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OnNldE5lZWRzRGVzdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyk6
IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjphbGxvY2F0ZWRWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRs
ZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTmV3
bHlBbGxvY2F0ZWRTdGFsZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omhh
c0FueU5ld2x5QWxsb2NhdGVkV2l0aFN3ZWVwKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6aGVhcCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpzcGFjZSk6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OnJlc2V0TWFya2luZ1ZlcnNpb24pOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6Y2xlYXJOZXdseUFsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9N
YXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6bmV4dFZlcnNpb24pOgor
ICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YWxsb2NhdGVkVmVyc2lvbik6CisgICAgICAgIChK
U0M6Ok1hcmtlZFNwYWNlOjptYXJraW5nVmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKwogMjAxNi0xMC0wOCAgU2FhbSBCYXJhdGkgIDxz
YmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNJbmRleGVkUHJvcGVydHkgY2xvYmJlcml6
ZSBydWxlIGlzIHdyb25nIGZvciBBcnJheTo6Rm9yY2VPU1JFeGl0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA2OTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0NSw2ICs0NDUsNyBAQAogCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2Fs
bEVkZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY2NEIyNzcxQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEY2NEIy
N0ExQTc5NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVk
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY0RUFGMzFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlC
IC8qIEFpckFyZ0lubGluZXMuaCAqLzsgfTsKKwkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8q
IENvZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxp
bmVzLmggKi87IH07CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVz
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZF
QkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAw
RDAxN0YxIC8qIERGR0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxh
YmlsaXR5LmNwcCAqLzsgfTsKQEAgLTI3MTAsNiArMjcxMSw3IEBACiAJCTBGNjRCMjc3MUE3OTU3
QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWxsRWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRC
Mjc4MUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY0
RUFGMjFDNEVDRDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJBcmdJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyQXJnSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2NENFNzFEQTMwNEVEMDBC
MDBBMTEgLyogQ29kZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlQmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNjY2RUJFMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZF
QkYxODM1NjZGOTAwRDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFi
aWxpdHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxh
YmlsaXR5LmNwcDsgcGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTMyOSw2ICs1MzMxLDcgQEAKIAkJCQkwRjFDM0REOTFCQkNFMDlF
MDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggKi8sCiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQw
IC8qIENvZGVCbG9ja1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8q
IENvZGVCbG9ja1NldC5oICovLAorCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2Rl
QmxvY2tTZXRJbmxpbmVzLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENv
bnNlcnZhdGl2ZVJvb3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyog
Q29uc2VydmF0aXZlUm9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyog
RGVmZXJHQy5jcHAgKi8sCkBAIC03OTYzLDYgKzc5NjYsNyBAQAogCQkJCUJDMThDNDFDMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTdDRjQ1OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RDgwMUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0Nl
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0Nl
bGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEg
LyogSlNDSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA2OTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNp
bmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDY5NjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVC
bG9ja0hhc2guaCIKLSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1h
cC5oIgpAQCAtNzYsNiArNzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczsKK2NsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWNTdGF0ZTsK
IGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CkBAIC0xMzExLDM4ICsxMzExLDYgQEAgaW5saW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0
V2Vha2x5SAogICAgIG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBzdGQ6
Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIH0KIAotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0Ojpt
YXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQot
ewotICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7Ci0gICAgLy8gV2UgaGF2ZSB0byBjaGVj
ayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBt
YXJrZXJzLgotICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihjYW5kaWRhdGVDb2RlQmxvY2spOwotICAgIAotICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3Ro
IG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBnby4KLSAgICAvLyAwICsgMSA9IDEKLSAgICAv
LyAtMSArIDEgPSAwCi0gICAgaWYgKHZhbHVlICsgMSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRp
ZGF0ZUNvZGVCbG9jayk7IAotICAgIGlmICghbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVC
bG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQg
Q29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKLXsKLSAgICBpZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5
IHRvIHJlY292ZXIgZ3JhY2VmdWxseSBpZiB3ZSBmb3JnZXQgdG8gZXhlY3V0ZSBhIGJhcnJpZXIg
Zm9yIGEKLSAgICAvLyBDb2RlQmxvY2sgdGhhdCBkb2VzIHZhbHVlIHByb2ZpbGluZy4gVGhpcyBp
cyBwcm9iYWJseSBvdmVya2lsbCwgYnV0IHdlCi0gICAgLy8gaGF2ZSBhbHdheXMgZG9uZSBpdC4K
LSAgICBIZWFwOjpoZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOwotCi0g
ICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KIHRlbXBsYXRlIDx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmb3JFYWNoQ29k
ZUJsb2NrKEZ1bmN0b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9u
IDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNywxNiArMTA3LDE3IEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpj
b250YWlucyhjb25zdCBMb2NrSG8KICAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5z
KGNvZGVCbG9jaykgfHwgbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9j
dXJyZW50bHlFeGVjdXRpbmcuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxv
Y2tTZXQ6OndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoSGVhcCogaGVh
cCkKK3ZvaWQgQ29kZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVh
cCogaGVhcCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZygiUmVtZW1iZXJpbmcgIiwgbV9jdXJyZW50bHlFeGVjdXRp
bmcuc2l6ZSgpLCAiIGNvZGUgYmxvY2tzLlxuIik7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVC
bG9jayA6IG1fY3VycmVudGx5RXhlY3V0aW5nKQogICAgICAgICBoZWFwLT53cml0ZUJhcnJpZXIo
Y29kZUJsb2NrKTsKK30KIAotICAgIC8vIEl0J3Mgc2FmZSB0byBjbGVhciB0aGlzIHNldCBiZWNh
dXNlIHdlIHdvbid0IGRlbGV0ZSB0aGUgQ29kZUJsb2NrcwotICAgIC8vIGluIGl0IHVudGlsIHRo
ZSBuZXh0IEdDLCBhbmQgd2UnbGwgcmVjb21wdXRlIGl0IGF0IHRoYXQgdGltZS4KK3ZvaWQgQ29k
ZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1dGluZygpCit7CiAgICAgbV9jdXJyZW50bHlF
eGVjdXRpbmcuY2xlYXIoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29kZUJsb2NrU2V0LmgJKHJldmlzaW9uIDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvZGVCbG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw5IEBAIHB1
YmxpYzoKICAgICAKICAgICAvLyBBZGQgYWxsIGN1cnJlbnRseSBleGVjdXRpbmcgQ29kZUJsb2Nr
cyB0byB0aGUgcmVtZW1iZXJlZCBzZXQgdG8gYmUgCiAgICAgLy8gcmUtc2Nhbm5lZCBkdXJpbmcg
dGhlIG5leHQgY29sbGVjdGlvbi4KLSAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1
dGluZ0NvZGVCbG9ja3MoSGVhcCopOworICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKEhlYXAqKTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsKIAog
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVC
bG9jayk7CiAgICAgTG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tl
ciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQoreworICAgIEFTU0VSVChtX2xvY2suaXNMb2Nr
ZWQoKSk7CisgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9z
ZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgorICAgIHVpbnRwdHJfdCB2YWx1
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOworICAg
IAorICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9u
ZSBnby4KKyAgICAvLyAwICsgMSA9IDEKKyAgICAvLyAtMSArIDEgPSAwCisgICAgaWYgKHZhbHVl
ICsgMSA8PSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAgIGlmICgh
bV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5j
b250YWlucyhjb2RlQmxvY2spKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrKGxvY2tlciwg
Y29kZUJsb2NrKTsKK30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExv
Y2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIWNvZGVCbG9jaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9j
ayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDY5NjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSGVhcFV0aWwuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNjk2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiSGVhcC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMu
aCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKQEAgLTM4OCwxOCArMzg5LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91Ymxl
IGdjU3RhcnRUaW1lLAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcihtX3Ns
b3RWaXNpdG9yKTsKICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290
cygqdGhpcyk7CiAgICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWlu
Z1Njb3BlKCp0aGlzLCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252ZXJnZW5jZSIpOwotICAg
ICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJr
IGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhl
IG1hcmsgYml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAg
ICAgICAgewotICAgICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29w
ZSgqdGhpcywgIkhlYXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwotICAgICAgICAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgICAgICAg
ICAgZ2F0aGVyU3RhY2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNr
VG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9v
dHMoY29uc2VydmF0aXZlUm9vdHMpOwotICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJv
b3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKLSAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIERGRzo6cmVtZW1iZXJDb2RlQmxvY2tzKCptX3ZtKTsKQEAgLTQ2Myw5ICs0NTQs
MjQgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQ
YXJhbGxlbE1vZGVFbmFibGVyIGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAg
ICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgeworICAgICAg
ICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6
Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOworICAgICAgICAgICAgQ29uc2VydmF0aXZl
Um9vdHMgY29uc2VydmF0aXZlUm9vdHMoKnRoaXMpOworICAgICAgICAgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tS
b290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZl
ZFJlZ2lzdGVycyk7CisgICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZl
Um9vdHMpOworICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2
ZVJvb3RzKTsKKyAgICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZl
Um9vdHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMg
dG8gY29uc2VydmF0aXZlbHkgZW5zdXJlIHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0
aGF0IGFyZQorICAgICAgICAgICAgLy8gcnVubmluZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5l
ZWQgdG8gYmUgc3VyZSB0byBkbyBpdCAqYWZ0ZXIqIHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAg
ICAgICAgICAgIC8vIHNvIHRoYXQgd2Uga25vdyBmb3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMg
YSBiYXJyaWVyLgorICAgICAgICAgICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2NrcygpOworICAgICAgICB9CisKICAgICAgICAgdmlzaXRFeHRlcm5hbFJlbWVtYmVyZWRT
ZXQoKTsKICAgICAgICAgdmlzaXRTbWFsbFN0cmluZ3MoKTsKLSAgICAgICAgdmlzaXRDb25zZXJ2
YXRpdmVSb290cyhjb25zZXJ2YXRpdmVSb290cyk7CiAgICAgICAgIHZpc2l0UHJvdGVjdGVkT2Jq
ZWN0cyhoZWFwUm9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEFyZ3VtZW50QnVmZmVycyhoZWFw
Um9vdFZpc2l0b3IpOwogICAgICAgICB2aXNpdEV4Y2VwdGlvbihoZWFwUm9vdFZpc2l0b3IpOwpA
QCAtNTI0LDExICs1MzAsNiBAQCB2b2lkIEhlYXA6OmJlZ2luTWFya2luZygpCiAgICAgICAgIG1f
Y29kZUJsb2Nrcy0+Y2xlYXJNYXJrc0ZvckZ1bGxDb2xsZWN0aW9uKCk7CiAgICAgCiAgICAgewot
ICAgICAgICBUaW1pbmdTY29wZSBjbGVhck5ld2x5QWxsb2NhdGVkVGltaW5nU2NvcGUoKnRoaXMs
ICJtX29iamVjdFNwYWNlLmNsZWFyTmV3bHlBbGxvY2F0ZWQiKTsKLSAgICAgICAgbV9vYmplY3RT
cGFjZS5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgfQotICAgIAotICAgIHsKICAgICAgICAg
VGltaW5nU2NvcGUgY2xlYXJNYXJrc1RpbWluZ1Njb3BlKCp0aGlzLCAibV9vYmplY3RTcGFjZS5i
ZWdpbk1hcmtpbmciKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5iZWdpbk1hcmtpbmcoKTsKICAg
ICB9CkBAIC0xMDYwLDYgKzEwNjEsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBIZWFwOjpjb2xsZWN0
SW1wbChIZWFwCiAKICAgICBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKICAgICB3cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAgY2xlYXJDdXJyZW50bHlF
eGVjdXRpbmdDb2RlQmxvY2tzKCk7CiAKICAgICBwcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogICAg
IHVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKTsKQEAgLTEyMDMsNyArMTIwNSwxMiBAQCB2b2lkIEhl
YXA6Om5vdGlmeUluY3JlbWVudGFsU3dlZXBlcigpCiAKIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVy
Q3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCiB7Ci0gICAgbV9jb2RlQmxvY2tzLT53cml0
ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKHRoaXMpOworICAgIG1fY29kZUJs
b2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKHRoaXMpOworfQorCit2b2lkIEhl
YXA6OmNsZWFyQ3VycmVudGx5RXhlY3V0aW5nQ29kZUJsb2NrcygpCit7CisgICAgbV9jb2RlQmxv
Y2tzLT5jbGVhckN1cnJlbnRseUV4ZWN1dGluZygpOwogfQogCiB2b2lkIEhlYXA6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUwLDYgKzM1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVTb3VyY2VQ
cm92aWRlckNhY2hlcygpOwogICAgIHZvaWQgbm90aWZ5SW5jcmVtZW50YWxTd2VlcGVyKCk7CiAg
ICAgdm9pZCB3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCk7CisgICAg
dm9pZCBjbGVhckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAg
ICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA2OTYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEs
OSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4m
IHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisgICAg
ICAgIEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hhciog
cG9pbnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91
c0NhbmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxl
KCkuY2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5o
YW5kbGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBw
cmV2aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+
aGFuZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1Bv
aW50ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9p
ZCogcG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZl
Q2VsbChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIp
KQogICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJl
dmlzaW9uIDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9j
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1Myw4IEBAIGJvb2wgTWFya2VkQWxs
b2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRp
bWVDaGVjayA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tz
LnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9
IG1fYmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBG
b3JjZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2Vt
YW50aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkpCi0g
ICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwotICAg
ICAgICB9CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnNl
dE5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsK
ICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNr
UmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTQzNiw3ICs0MzMsOCBAQCB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6c3dlZXAoKQogewogICAgIG1fdW5zd2VwdC5mb3JFYWNoU2V0Qml0KAogICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgewotICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5z
d2VlcCgpOworICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nr
c1tpbmRleF07CisgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgfSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBo
ZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENv
bnRhaW5lcigpKQorICAgICwgbV9hbGxvY2F0ZWRWZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVy
c2lvbikKIHsKICAgICBtX2Jsb2NrID0gbmV3IChOb3ROdWxsLCBibG9ja1NwYWNlKSBNYXJrZWRC
bG9jaygqaGVhcC52bSgpLCAqdGhpcyk7CiAgICAgCkBAIC0xMjUsNyArMTI2LDcgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIGZvciAoc2l6ZV90IGkgPSBm
aXJzdEF0b20oKTsgaSA8IG1fZW5kQXRvbTsgaSArPSBtX2F0b21zUGVyQ2VsbCkgewogICAgICAg
ICBpZiAoZW1wdHlNb2RlID09IE5vdEVtcHR5CiAgICAgICAgICAgICAmJiAoKG1hcmtzTW9kZSA9
PSBNYXJrc05vdFN0YWxlICYmIGJsb2NrLm1fbWFya3MuZ2V0KGkpKQotICAgICAgICAgICAgICAg
IHx8IChuZXdseUFsbG9jYXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFs
bG9jYXRlZC0+Z2V0KGkpKSkpIHsKKyAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0ZWRN
b2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQuZ2V0KGkpKSkpIHsK
ICAgICAgICAgICAgIGlzRW1wdHkgPSBmYWxzZTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CkBAIC0xNDgsNyArMTQ5LDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3BlY2lhbGl6ZQogICAgIC8vIFdlIG9ubHkgd2FudCB0byBkaXNjYXJkIHRoZSBuZXdseUFsbG9j
YXRlZCBiaXRzIGlmIHdlJ3JlIGNyZWF0aW5nIGEgRnJlZUxpc3QsCiAgICAgLy8gb3RoZXJ3aXNl
IHdlIHdvdWxkIGxvc2UgaW5mb3JtYXRpb24gb24gd2hhdCdzIGN1cnJlbnRseSBhbGl2ZS4KICAg
ICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlzdCAmJiBuZXdseUFsbG9jYXRlZE1vZGUg
PT0gSGFzTmV3bHlBbGxvY2F0ZWQpCi0gICAgICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBudWxscHRy
OworICAgICAgICBtX2FsbG9jYXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247
CiAKICAgICBGcmVlTGlzdCByZXN1bHQgPSBGcmVlTGlzdDo6bGlzdChoZWFkLCBjb3VudCAqIGNl
bGxTaXplKCkpOwogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0KQpAQCAtMjA3
LDcgKzIwOCw3IEBAIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGUKIHRl
bXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlNjcmliYmxlTW9k
ZSBzY3JpYmJsZU1vZGU+CiBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBl
clNlbGVjdEhhc05ld2x5QWxsb2NhdGVkKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7Ci0gICAgaWYg
KG1fbmV3bHlBbGxvY2F0ZWQpCisgICAgaWYgKGhhc0FueU5ld2x5QWxsb2NhdGVkKCkpCiAgICAg
ICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZTxlbXB0eU1vZGUsIGRlc3RydWN0
aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBIYXNOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2RlKTsKICAg
ICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2RlLCBkZXN0cnVjdGlv
bk1vZGUsIHNjcmliYmxlTW9kZSwgRG9lc05vdEhhdmVOZXdseUFsbG9jYXRlZD4oc3dlZXBNb2Rl
KTsKIH0KQEAgLTI3NSw4ICsyNzYsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN0b3BB
bGxvY2F0aW5nCiAgICAgLy8gYWxsb2NhdGVkIGZyb20gb3VyIGZyZWUgbGlzdCBhcmUgbm90IGN1
cnJlbnRseSBtYXJrZWQsIHNvIHdlIG5lZWQgYW5vdGhlcgogICAgIC8vIHdheSB0byB0ZWxsIHdo
YXQncyBsaXZlIHZzIGRlYWQuIAogICAgIAotICAgIEFTU0VSVCghbV9uZXdseUFsbG9jYXRlZCk7
Ci0gICAgbV9uZXdseUFsbG9jYXRlZCA9IHN0ZDo6bWFrZV91bmlxdWU8V1RGOjpCaXRtYXA8YXRv
bXNQZXJCbG9jaz4+KCk7CisgICAgbV9uZXdseUFsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1f
YWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5hbGxvY2F0ZWRWZXJzaW9u
KCk7CiAKICAgICBTZXROZXdseUFsbG9jYXRlZEZ1bmN0b3IgZnVuY3Rvcih0aGlzKTsKICAgICBm
b3JFYWNoQ2VsbChmdW5jdG9yKTsKQEAgLTI5NSwxMCArMjk2LDEyIEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6c3RvcEFsbG9jYXRpbmcKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6bGFz
dENoYW5jZVRvRmluYWxpemUoKQogewogICAgIGFsbG9jYXRvcigpLT5zZXRJc0FsbG9jYXRlZCh0
aGlzLCBmYWxzZSk7Ci0gICAgbV9ibG9jay0+Y2xlYXJNYXJrcygpOworICAgIG1fYmxvY2stPm1f
bWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX2Jsb2NrLT5jbGVhckhhc0FueU1hcmtlZCgpOworICAg
IG1fYmxvY2stPm1fbWFya2luZ1ZlcnNpb24gPSBoZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2lu
Z1ZlcnNpb24oKTsKICAgICBtX3dlYWtTZXQubGFzdENoYW5jZVRvRmluYWxpemUoKTsKLQotICAg
IGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkLmNsZWFyQWxsKCk7
CisgICAgbV9hbGxvY2F0ZWRWZXJzaW9uID0gaGVhcCgpLT5vYmplY3RTcGFjZSgpLmFsbG9jYXRl
ZFZlcnNpb24oKTsKICAgICBzd2VlcCgpOwogfQogCkBAIC0zMDcsNyArMzEwLDcgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzdW1lQWxsbwogICAgIEFTU0VSVCghYWxsb2NhdG9y
KCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKICAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAot
ICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkgeworICAgIGlmICghaGFzQW55TmV3bHlBbGxvY2F0
ZWQoKSkgewogICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0
aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFsbG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVl
TGlzdCgpOwogICAgIH0KQEAgLTM0NiwyNCArMzQ5LDU2IEBAIHZvaWQgTWFya2VkQmxvY2s6OmFi
b3V0VG9NYXJrU2xvdyhIZWFwVmUKIHsKICAgICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFj
ZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlm
IChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkgewotICAgICAgICBjbGVhck1hcmtzKG1h
cmtpbmdWZXJzaW9uKTsKLSAgICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25l
cyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhpcyBibG9jay4KLSAgICAgICAgaGFuZGxlKCkuYWxs
b2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0
cnVlKTsKKyAgICBpZiAoIWFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKGhhbmRsZSgpLmFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCgm
aGFuZGxlKCkpCisgICAgICAgIHx8ICFtYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyht
YXJraW5nVmVyc2lvbikpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGJs
b2NrIGlzIGZ1bGwgYW5kIGlzIGFscmVhZHkgcmVjb2duaXplZCBhcyBzdWNoLCBvciB0aGF0IHRo
ZQorICAgICAgICAvLyBibG9jayBkaWQgbm90IHN1cnZpdmUgdGhlIHByZXZpb3VzIEdDLiBTbywg
d2UgY2FuIGNsZWFyIG1hcmsgYml0cyB0aGUgb2xkIGZhc2hpb25lZAorICAgICAgICAvLyB3YXku
IE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBzdWNoIGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFs
bG9jYXRlZCB3aXRoIGFuIHVwLXRvLQorICAgICAgICAvLyBkYXRlIHZlcnNpb24hIElmIGl0IGRv
ZXMsIHRoZW4gd2Ugd2FudCB0byBsZWF2ZSB0aGUgbmV3bHlBbGxvY2F0ZWQgYWxvbmUsIHNpbmNl
IHRoYXQKKyAgICAgICAgLy8gbWVhbnMgdGhhdCB3ZSBoYWQgYWxsb2NhdGVkIGluIHRoaXMgcHJl
dmlvdXNseSBlbXB0eSBibG9jayBidXQgZGlkIG5vdCBmaWxsIGl0IHVwLCBzbworICAgICAgICAv
LyB3ZSBjcmVhdGVkIGEgbmV3bHlBbGxvY2F0ZWQuCisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBIZWFwVmVyc2lvbiBhbGxvY2F0ZWRWZXJzaW9uID0g
c3BhY2UoKS0+YWxsb2NhdGVkVmVyc2lvbigpOworICAgICAgICBpZiAoaGFuZGxlKCkubV9hbGxv
Y2F0ZWRWZXJzaW9uID09IGFsbG9jYXRlZFZlcnNpb24pIHsKKyAgICAgICAgICAgIC8vIE1lcmdl
IHRoZSBjb250ZW50cyBvZiBtYXJrZWQgaW50byBuZXdseUFsbG9jYXRlZC4gSWYgd2UgZ2V0IHRo
ZSBmdWxsIHNldCBvZiBiaXRzCisgICAgICAgICAgICAvLyB0aGVuIGludmFsaWRhdGUgbmV3bHlB
bGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAgICBoYW5kbGUoKS5tX25ld2x5
QWxsb2NhdGVkLm1lcmdlQW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBSZXBsYWNlIHRoZSBjb250ZW50cyBvZiBuZXdseUFsbG9jYXRlZCB3aXRoIG1h
cmtlZC4gSWYgd2UgZ2V0IHRoZSBmdWxsIHNldCBvZgorICAgICAgICAgICAgLy8gYml0cyB0aGVu
IGludmFsaWRhdGUgbmV3bHlBbGxvY2F0ZWQgYW5kIHNldCBhbGxvY2F0ZWQuCisgICAgICAgICAg
ICBoYW5kbGUoKS5tX25ld2x5QWxsb2NhdGVkLnNldEFuZENsZWFyKG1fbWFya3MpOworICAgICAg
ICB9CisgICAgICAgIGhhbmRsZSgpLm1fYWxsb2NhdGVkVmVyc2lvbiA9IGFsbG9jYXRlZFZlcnNp
b247CiAgICAgfQorICAgIGNsZWFySGFzQW55TWFya2VkKCk7CisgICAgV1RGOjpzdG9yZVN0b3Jl
RmVuY2UoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAgCisg
ICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3Qg
aW4gdGhpcyBibG9jay4KKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5kQ2hl
Y2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOwogfQogCi12b2lkIE1hcmtlZEJs
b2NrOjpjbGVhck1hcmtzKCkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzZXRBbGxvY2F0
ZWQoKQogewotICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdW
ZXJzaW9uKCkpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX2FsbG9j
YXRlZFZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CiB9CiAKLXZvaWQgTWFya2Vk
QmxvY2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCit2b2lkIE1hcmtl
ZEJsb2NrOjpyZXNldE1hcmtzKCkKIHsKLSAgICBtX21hcmtzLmNsZWFyQWxsKCk7Ci0gICAgY2xl
YXJIYXNBbnlNYXJrZWQoKTsKLSAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwotICAgIG1fbWFy
a2luZ1ZlcnNpb24gPSBtYXJraW5nVmVyc2lvbjsKKyAgICAvLyBXZSB3YW50IGFib3V0VG9NYXJr
U2xvdygpIHRvIHNlZSB3aGF0IHRoZSBtYXJrIGJpdHMgd2VyZSBhZnRlciB0aGUgbGFzdCBjb2xs
ZWN0aW9uLiBJdCB1c2VzCisgICAgLy8gdGhlIHZlcnNpb24gbnVtYmVyIHRvIGRpc3Rpbmd1aXNo
IGJldHdlZW4gdGhlIG1hcmtzIGhhdmluZyBhbHJlYWR5IGJlZW4gc3RhbGUgYmVmb3JlCisgICAg
Ly8gYmVnaW5NYXJraW5nKCksIG9yIGp1c3Qgc3RhbGUgbm93IHRoYXQgYmVnaW5NYXJraW5nKCkg
YnVtcGVkIHRoZSB2ZXJzaW9uLiBJZiB3ZSBoYXZlIGEgdmVyc2lvbgorICAgIC8vIHdyYXBhcm91
bmQsIHRoZW4gd2Ugd2lsbCBjYWxsIHRoaXMgbWV0aG9kIGJlZm9yZSByZXNldHRpbmcgdGhlIHZl
cnNpb24gdG8gbnVsbC4gV2hlbiB0aGUKKyAgICAvLyB2ZXJzaW9uIGlzIG51bGwsIGFib3V0VG9N
YXJrU2xvdygpIHdpbGwgYXNzdW1lIHRoYXQgdGhlIG1hcmtzIHdlcmUgbm90IHN0YWxlIGFzIG9m
IGJlZm9yZQorICAgIC8vIGJlZ2luTWFya2luZygpLiBIZW5jZSB0aGUgbmVlZCB0byB3aGlwIHRo
ZSBtYXJrcyBpbnRvIHNoYXBlLgorICAgIGlmIChhcmVNYXJrc1N0YWxlKCkpCisgICAgICAgIG1f
bWFya3MuY2xlYXJBbGwoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51
bGxWZXJzaW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNDI1LDYgKzQ2MCwxMSBA
QCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnJlbW92ZUZyb21BbGxvCiAgICAgbV9hbGxvY2F0
b3ItPnJlbW92ZUJsb2NrKHRoaXMpOwogfQogCit2b2lkIE1hcmtlZEJsb2NrOjpzZXROZWVkc0Rl
c3RydWN0aW9uKCkKK3sKKyAgICBtX25lZWRzRGVzdHJ1Y3Rpb24gPSBoYW5kbGUoKS5uZWVkc0Rl
c3RydWN0aW9uKCk7Cit9CisKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQWRkVG9BbGxv
Y2F0b3IoTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBpbmRleCkKIHsKICAgICBB
U1NFUlQobV9pbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKQEAg
LTQ0MiwxMCArNDgyLDkgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkaWRBZGRUb0FsbG9j
YQogICAgIGlmIChtX2F0dHJpYnV0ZXMuY2VsbEtpbmQgIT0gSGVhcENlbGw6OkpTQ2VsbCkKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uID09IERvZXNOb3RO
ZWVkRGVzdHJ1Y3Rpb24pOwogICAgIAotICAgIGJsb2NrKCkubV9uZWVkc0Rlc3RydWN0aW9uID0g
bmVlZHNEZXN0cnVjdGlvbigpOworICAgIGJsb2NrKCkuc2V0TmVlZHNEZXN0cnVjdGlvbigpOwog
ICAgIAotICAgIHVuc2lnbmVkIGNlbGxzUGVyQmxvY2sgPSBNYXJrZWRTcGFjZTo6YmxvY2tQYXls
b2FkIC8gY2VsbFNpemU7Ci0gICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1p
bk1hcmtlZEJsb2NrVXRpbGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2spOworICAgIGRvdWJsZSBt
YXJrQ291bnRCaWFzID0gLShPcHRpb25zOjptaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uKCkgKiBj
ZWxsc1BlckJsb2NrKCkpOwogICAgIAogICAgIC8vIFRoZSBtYXJrIGNvdW50IGJpYXMgc2hvdWxk
IGJlIGNvbWZvcnRhYmx5IHdpdGhpbiB0aGlzIHJhbmdlLgogICAgIFJFTEVBU0VfQVNTRVJUKG1h
cmtDb3VudEJpYXMgPiBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MTZfdD46Om1pbigpKSk7CkBAIC00NjYsMTIgKzUwNSwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OmRpZFJlbW92ZUZyb21BCiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZl
KGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIHJldHVybiBpc0xpdmUodm0oKS0+aGVhcC5v
YmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOworICAgIHJldHVybiBpc0xpdmUo
c3BhY2UoKS0+bWFya2luZ1ZlcnNpb24oKSwgc3BhY2UoKS0+aXNNYXJraW5nKCksIGNlbGwpOwog
fQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkK
IHsKLSAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2lu
Z1ZlcnNpb24oKSwgcCk7CisgICAgcmV0dXJuIGlzTGl2ZUNlbGwoc3BhY2UoKS0+bWFya2luZ1Zl
cnNpb24oKSwgc3BhY2UoKS0+aXNNYXJraW5nKCksIHApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNp
b24gMjA2OTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhl
YXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CitjbGFzcyBNYXJrZWRT
cGFjZTsKIAogdHlwZWRlZiB1aW50cHRyX3QgQml0czsKIHR5cGVkZWYgdWludDMyX3QgSGVhcFZl
cnNpb247CkBAIC0xMTAsNiArMTExLDcgQEAgcHVibGljOgogCiAgICAgICAgIE1hcmtlZEFsbG9j
YXRvciogYWxsb2NhdG9yKCkgY29uc3Q7CiAgICAgICAgIEhlYXAqIGhlYXAoKSBjb25zdDsKKyAg
ICAgICAgaW5saW5lIE1hcmtlZFNwYWNlKiBzcGFjZSgpIGNvbnN0OwogICAgICAgICBWTSogdm0o
KSBjb25zdDsKICAgICAgICAgV2Vha1NldCYgd2Vha1NldCgpOwogICAgICAgICAgICAgCkBAIC0x
NDEsMTEgKzE0Myw5IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzdG9wQWxsb2NhdGluZyhjb25z
dCBGcmVlTGlzdCYpOwogICAgICAgICBGcmVlTGlzdCByZXN1bWVBbGxvY2F0aW5nKCk7IC8vIENh
bGwgdGhpcyBpZiB5b3UgY2Fub25pY2FsaXplZCBhIGJsb2NrIGZvciBzb21lIG5vbi1jb2xsZWN0
aW9uIHJlbGF0ZWQgcHVycG9zZS4KICAgICAgICAgICAgIAotICAgICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlICJuZXdseSBhbGxvY2F0ZWQiIGJpdG1hcCB3YXMgbm9uLW51bGwgCi0gICAgICAg
IC8vIGFuZCB3YXMgc3VjY2Vzc2Z1bGx5IGNsZWFyZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4KLSAg
ICAgICAgYm9vbCBjbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICAKICAgICAgICAg
c2l6ZV90IGNlbGxTaXplKCk7CisgICAgICAgIGlubGluZSB1bnNpZ25lZCBjZWxsc1BlckJsb2Nr
KCk7CisgICAgICAgIAogICAgICAgICBjb25zdCBBbGxvY2F0b3JBdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzKCkgY29uc3Q7CiAgICAgICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0
OwogICAgICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdDsKQEAgLTE1Myw5ICsxNTMs
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgc2l6ZV90IG1hcmtDb3VudCgpOwog
ICAgICAgICBzaXplX3Qgc2l6ZSgpOwotICAgICAgICAgICAgCi0gICAgICAgIGlubGluZSBib29s
IGlzTGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKLSAg
ICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwg
Y29uc3Qgdm9pZCopOworICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBW
ZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3QgSGVhcENlbGwqKTsK
KyAgICAgICAgaW5saW5lIGJvb2wgaXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lv
biwgYm9vbCBpc01hcmtpbmcsIGNvbnN0IHZvaWQqKTsKIAogICAgICAgICBib29sIGlzTGl2ZShj
b25zdCBIZWFwQ2VsbCopOwogICAgICAgICBib29sIGlzTGl2ZUNlbGwoY29uc3Qgdm9pZCopOwpA
QCAtMTY0LDggKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgc2V0TmV3bHlBbGxvY2F0
ZWQoY29uc3Qgdm9pZCopOwogICAgICAgICB2b2lkIGNsZWFyTmV3bHlBbGxvY2F0ZWQoY29uc3Qg
dm9pZCopOwogICAgICAgICAKLSAgICAgICAgYm9vbCBoYXNBbnlOZXdseUFsbG9jYXRlZCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9uZXdseUFsbG9jYXRlZDsgfQotICAgICAgICAgICAgCisgICAgICAg
IEhlYXBWZXJzaW9uIGFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRl
ZFZlcnNpb247IH0KKyAgICAgICAgCisgICAgICAgIGlubGluZSBib29sIGlzTmV3bHlBbGxvY2F0
ZWRTdGFsZSgpIGNvbnN0OworICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaGFzQW55TmV3
bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgdm9pZCByZXNldEFsbG9jYXRlZCgpOworICAgICAgICAK
ICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JF
YWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hMaXZlQ2VsbChjb25zdCBGdW5jdG9y
Jik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9u
U3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5jdG9yJik7CkBAIC0xODUsNyArMTkwLDcg
QEAgcHVibGljOgogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBIYW5kbGUoSGVhcCYs
IHZvaWQqKTsKLSAgICAgICAgICAgIAorICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1
Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2VlcEhlbHBlclNlbGVjdFNjcmliYmxlTW9k
ZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAgICAgICAgCkBAIC0yMjMsNyArMjI4LDcg
QEAgcHVibGljOgogICAgICAgICBzaXplX3QgbV9hdG9tc1BlckNlbGwgeyBzdGQ6Om51bWVyaWNf
bGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIHNpemVfdCBtX2VuZEF0b20geyBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQu
IEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KICAgICAgICAgICAgIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJCbG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7
CisgICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAg
ICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAg
ICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxzZSB9OwpAQCAtMjMxLDYgKzIzNiw4IEBA
IHB1YmxpYzoKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBtX2FsbG9jYXRvciB7IG51bGxwdHIg
fTsKICAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFrU2V0OworICAgICAgICAKKyAgICAgICAg
SGVhcFZlcnNpb24gbV9hbGxvY2F0ZWRWZXJzaW9uOwogICAgICAgICAgICAgCiAgICAgICAgIE1h
cmtlZEJsb2NrKiBtX2Jsb2NrIHsgbnVsbHB0ciB9OwogICAgIH07CkBAIC0yNDAsNiArMjQ3LDgg
QEAgcHVibGljOgogICAgIEhhbmRsZSYgaGFuZGxlKCk7CiAgICAgICAgIAogICAgIFZNKiB2bSgp
IGNvbnN0OworICAgIGlubGluZSBIZWFwKiBoZWFwKCkgY29uc3Q7CisgICAgaW5saW5lIE1hcmtl
ZFNwYWNlKiBzcGFjZSgpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgaXNBdG9tQWxpZ25lZChj
b25zdCB2b2lkKik7CiAgICAgc3RhdGljIE1hcmtlZEJsb2NrKiBibG9ja0Zvcihjb25zdCB2b2lk
Kik7CkBAIC0yNzgsNyArMjg3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9CiAgICAg
Ci0gICAgaW5saW5lIHZvaWQgcmVzZXRNYXJraW5nVmVyc2lvbigpOworICAgIC8vIFRoaXMgaXMg
dXN1YWxseSBhIG5vLW9wLCBhbmQgd2UgdXNlIGl0IGFzIGEgbm8tb3AgdGhhdCB0b3VjaGVzIHRo
ZSBwYWdlIGluIGlzUGFnZWRPdXQoKS4KKyAgICB2b2lkIHNldE5lZWRzRGVzdHJ1Y3Rpb24oKTsK
KyAgICAKKyAgICB2b2lkIHJlc2V0TWFya3MoKTsKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBhdG9tQWxpZ25tZW50TWFzayA9IGF0b21TaXplIC0gMTsKQEAgLTI4OSwx
MyArMzAxLDEzIEBAIHByaXZhdGU6CiAgICAgQXRvbSogYXRvbXMoKTsKICAgICAgICAgCiAgICAg
dm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwotICAgIHZv
aWQgY2xlYXJNYXJrcygpOwotICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbik7CiAgICAgdm9pZCBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIAogICAgIHZvaWQg
bm90ZU1hcmtlZFNsb3coKTsKKyAgICAKKyAgICBpbmxpbmUgYm9vbCBtYXJrc0NvbnZleUxpdmVu
ZXNzRHVyaW5nTWFya2luZyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CiAgICAgICAgIAot
ICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwQXRvbWljLCB1aW50OF90
PiBtX21hcmtzOworICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2s+IG1fbWFya3M7CiAKICAg
ICBib29sIG1fbmVlZHNEZXN0cnVjdGlvbjsKICAgICBMb2NrIG1fbG9jazsKQEAgLTUyMSwyNiAr
NTMzLDE3IEBAIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2UKIAogaW5s
aW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNOZXdseUFsbG9jYXRlZChjb25zdCB2b2lk
KiBwKQogewotICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkLT5nZXQobV9ibG9jay0+YXRvbU51
bWJlcihwKSk7CisgICAgcmV0dXJuIG1fbmV3bHlBbGxvY2F0ZWQuZ2V0KG1fYmxvY2stPmF0b21O
dW1iZXIocCkpOwogfQogCiBpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzZXROZXds
eUFsbG9jYXRlZChjb25zdCB2b2lkKiBwKQogewotICAgIG1fbmV3bHlBbGxvY2F0ZWQtPnNldCht
X2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkLnNldChtX2Jsb2Nr
LT5hdG9tTnVtYmVyKHApKTsKIH0KIAogaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6
Y2xlYXJOZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKiBwKQogewotICAgIG1fbmV3bHlBbGxvY2F0
ZWQtPmNsZWFyKG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwotfQotCi1pbmxpbmUgYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAgICBpZiAobV9uZXds
eUFsbG9jYXRlZCkgewotICAgICAgICBtX25ld2x5QWxsb2NhdGVkID0gbnVsbHB0cjsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBtX25ld2x5QWxs
b2NhdGVkLmNsZWFyKG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCiBpbmxpbmUgYm9vbCBN
YXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2OTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDEwICsyNywzNCBAQAogCiAjaW5jbHVkZSAiTWFya2VkQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNM
aXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKK2lu
bGluZSB1bnNpZ25lZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjZWxsc1BlckJsb2NrKCkKK3sKKyAg
ICByZXR1cm4gTWFya2VkU3BhY2U6OmJsb2NrUGF5bG9hZCAvIGNlbGxTaXplKCk7Cit9CisKK2lu
bGluZSBib29sIE1hcmtlZEJsb2NrOjptYXJrc0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhI
ZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKK3sKKyAgICAvLyBUaGlzIHJldHVybnMgdHJ1ZSBp
ZiBhbnkgb2YgdGhlc2UgaXMgdHJ1ZToKKyAgICAvLyAtIFdlIGp1c3QgY3JlYXRlZCB0aGUgYmxv
Y2sgYW5kIHNvIHRoZSBiaXRzIGFyZSBjbGVhciBhbHJlYWR5LgorICAgIC8vIC0gVGhpcyBibG9j
ayBoYXMgb2JqZWN0cyBtYXJrZWQgZHVyaW5nIHRoZSBsYXN0IEdDLCBhbmQgc28gaXRzIHZlcnNp
b24gd2FzIHVwLXRvLWRhdGUganVzdAorICAgIC8vICAgYmVmb3JlIHRoZSBjdXJyZW50IGNvbGxl
Y3Rpb24gZGlkIGJlZ2luTWFya2luZygpLiBUaGlzIG1lYW5zIHRoYXQgYW55IG9iamVjdHMgdGhh
dCBoYXZlIAorICAgIC8vICAgdGhlaXIgbWFyayBiaXQgc2V0IGFyZSB2YWxpZCBvYmplY3RzIHRo
YXQgd2VyZSBuZXZlciBkZWxldGVkLCBhbmQgc28gYXJlIGNhbmRpZGF0ZXMgZm9yCisgICAgLy8g
ICBtYXJraW5nIGluIGFueSBjb25zZXJ2YXRpdmUgc2Nhbi4gVXNpbmcgb3VyIGphcmdvbiwgdGhl
eSBhcmUgImxpdmUiLgorICAgIC8vIC0gV2UgZGlkIH4yXjMyIGNvbGxlY3Rpb25zIGFuZCByb3Rh
dGVkIHRoZSB2ZXJzaW9uIGJhY2sgdG8gbnVsbCwgc28gd2UgbmVlZGVkIHRvIGhhcmQtcmVzZXQK
KyAgICAvLyAgIGV2ZXJ5dGhpbmcuIElmIHRoZSBtYXJrcyBoYWQgYmVlbiBzdGFsZSwgd2Ugd291
bGQgaGF2ZSBjbGVhcmVkIHRoZW0uIFNvLCB3ZSBjYW4gYmUgc3VyZSB0aGF0CisgICAgLy8gICBh
bnkgc2V0IG1hcmsgYml0IHJlZmxlY3RzIG9iamVjdHMgbWFya2VkIGR1cmluZyBsYXN0IEdDLCBp
LmUuICJsaXZlIiBvYmplY3RzLgorICAgIC8vIEl0IHdvdWxkIGJlIGFic3VyZCB0byB1c2UgdGhp
cyBtZXRob2Qgd2hlbiBub3QgY29sbGVjdGluZywgc2luY2UgdGhpcyBzcGVjaWFsICJvbmUgdmVy
c2lvbgorICAgIC8vIGJhY2siIHN0YXRlIG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiB3ZSdyZSBpbiBh
IGNvbmN1cnJlbnQgY29sbGVjdGlvbiBhbmQgaGF2ZSB0byBiZQorICAgIC8vIGNvbnNlcnZhdGl2
ZS4KKyAgICByZXR1cm4gbV9tYXJraW5nVmVyc2lvbiA9PSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b24KKyAgICAgICAgfHwgTWFya2VkU3BhY2U6Om5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24p
ID09IG1hcmtpbmdWZXJzaW9uOworfQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxl
Ojppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25z
dCBIZWFwQ2VsbCogY2VsbCkKIHsKICAgICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKICAgICAK
QEAgLTM5LDIyICs2MywzNiBAQCBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xp
dmUoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgTWFya2VkQmxv
Y2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKLSAgICAKICAgICBpZiAoYWxsb2NhdG9yKCktPmlz
QWxsb2NhdGVkKHRoaXMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKLSAgICBpZiAoYmxv
Y2suYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBNYXJrZWRCbG9jayYgYmxvY2sgPSB0aGlzLT5ibG9jaygpOworICAgIAorICAgIGlmIChi
bG9jay5hcmVNYXJrc1N0YWxlKCkpIHsKKyAgICAgICAgaWYgKCFpc01hcmtpbmcpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghYmxvY2subWFya3NDb252ZXlMaXZlbmVz
c0R1cmluZ01hcmtpbmcobWFya2luZ1ZlcnNpb24pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KIAotICAgIHJldHVybiBibG9jay5pc01hcmtlZChjZWxsKTsKKyAgICByZXR1cm4g
YmxvY2subV9tYXJrcy5nZXQoYmxvY2suYXRvbU51bWJlcihjZWxsKSk7CiB9CiAKLWlubGluZSBi
b29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24sIGNvbnN0IHZvaWQqIHApCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjpp
c0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29u
c3Qgdm9pZCogcCkKIHsKICAgICBpZiAoIW1fYmxvY2stPmlzQXRvbShwKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBpc0xpdmUobWFya2luZ1ZlcnNpb24sIHN0YXRpY19jYXN0
PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworICAgIHJldHVybiBpc0xpdmUobWFya2luZ1ZlcnNpb24s
IGlzTWFya2luZywgc3RhdGljX2Nhc3Q8Y29uc3QgSGVhcENlbGwqPihwKSk7Cit9CisKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fYWxsb2NhdGVkVmVyc2lvbiAhPSBzcGFjZSgpLT5hbGxvY2F0ZWRW
ZXJzaW9uKCk7Cit9CisKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5l
d2x5QWxsb2NhdGVkKCkKK3sKKyAgICByZXR1cm4gIWlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTg3LDkgKzEyNSwxOSBAQCBpbmxp
bmUgSXRlcmF0aW9uU3RhdHVzIE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgcmV0dXJuIEl0ZXJhdGlv
blN0YXR1czo6Q29udGludWU7CiB9CiAKLWlubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1h
cmtpbmdWZXJzaW9uKCkKK2lubGluZSBIZWFwKiBNYXJrZWRCbG9jazo6aGVhcCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICZ2bSgpLT5oZWFwOworfQorCitpbmxpbmUgTWFya2VkU3BhY2UqIE1hcmtl
ZEJsb2NrOjpzcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNwYWNl
KCk7Cit9CisKK2lubGluZSBNYXJrZWRTcGFjZSogTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BhY2Uo
KSBjb25zdAogewotICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNp
b247CisgICAgcmV0dXJuICZoZWFwKCktPm9iamVjdFNwYWNlKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAkocmV2aXNpb24gMjA2OTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMjkgKzQ1MSw2IEBAIHZvaWQgTWFya2Vk
U3BhY2U6OnNocmluaygpCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1hcmtlZFNwYWNlOjpjbGVh
ck5ld2x5QWxsb2NhdGVkKCkKLXsKLSAgICBmb3JFYWNoQWxsb2NhdG9yKAotICAgICAgICBbJl0g
KE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yKSAtPiBJdGVyYXRpb25TdGF0dXMgewotICAgICAg
ICAgICAgaWYgKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gYWxsb2NhdG9yLnRha2VMYXN0
QWN0aXZlQmxvY2soKSkKLSAgICAgICAgICAgICAgICBibG9jay0+Y2xlYXJOZXdseUFsbG9jYXRl
ZCgpOwotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7Ci0gICAg
ICAgIH0pOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytp
KQotICAgICAgICBtX2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsK
LQotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Ci0gICAgICAgIGZvckVhY2hCbG9jaygKLSAg
ICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlRfVU5VU0VEKGJsb2NrLCAhYmxvY2stPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQotICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChhbGxvY2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKLSAgICB9
Ci19Ci0KIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7CiAgICAgaWYgKG1faGVh
cC0+b3BlcmF0aW9uSW5Qcm9ncmVzcygpID09IEZ1bGxDb2xsZWN0aW9uKSB7CkBAIC00ODMsMTYg
KzQ2MCwxNSBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICAgICAg
ICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVlOwogICAgICAgICAgICAgfSk7CiAK
LSAgICAgICAgbV9tYXJraW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24p
OwotICAgICAgICAKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fbWFya2luZ1ZlcnNpb24gPT0gaW5p
dGlhbFZlcnNpb24pKSB7Ci0gICAgICAgICAgICAvLyBPaCBubyEgVmVyc2lvbiB3cmFwLWFyb3Vu
ZCEgV2UgaGFuZGxlIHRoaXMgYnkgc2V0dGluZyBhbGwgYmxvY2sgdmVyc2lvbnMgdG8gbnVsbC4K
KyAgICAgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pID09IGlu
aXRpYWxWZXJzaW9uKSkgewogICAgICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAg
ICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGhhbmRsZS0+YmxvY2soKS5yZXNldE1hcmtpbmdWZXJzaW9uKCk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZS0+YmxvY2soKS5yZXNldE1hcmtzKCk7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIG1fbWFya2luZ1ZlcnNpb24gPSBuZXh0VmVy
c2lvbihtX21hcmtpbmdWZXJzaW9uKTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoTGFyZ2VBbGxv
Y2F0aW9uKiBhbGxvY2F0aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgYWxs
b2NhdGlvbi0+ZmxpcCgpOwogICAgIH0KQEAgLTUxMSw2ICs0ODcsMjMgQEAgdm9pZCBNYXJrZWRT
cGFjZTo6YmVnaW5NYXJraW5nKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2luZygpCiB7
CisgICAgaWYgKFVOTElLRUxZKG5leHRWZXJzaW9uKG1fYWxsb2NhdGVkVmVyc2lvbikgPT0gaW5p
dGlhbFZlcnNpb24pKSB7CisgICAgICAgIGZvckVhY2hCbG9jaygKKyAgICAgICAgICAgIFsmXSAo
TWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlLT5y
ZXNldEFsbG9jYXRlZCgpOworICAgICAgICAgICAgfSk7CisgICAgfQorICAgICAgICAKKyAgICBt
X2FsbG9jYXRlZFZlcnNpb24gPSBuZXh0VmVyc2lvbihtX2FsbG9jYXRlZFZlcnNpb24pOworICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IG1fbGFyZ2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXND
b2xsZWN0aW9uOyBpIDwgbV9sYXJnZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBt
X2xhcmdlQWxsb2NhdGlvbnNbaV0tPmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKKworICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGZvciAoTGFyZ2VBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uIDogbV9sYXJnZUFsbG9jYXRpb25zKQorICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxv
Y2F0aW9uLCAhYWxsb2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKKyAgICB9CisKICAgICBm
b3JFYWNoQWxsb2NhdG9yKAogICAgICAgICBbJl0gKE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgYWxsb2NhdG9yLmVuZE1hcmtpbmco
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMjA2OTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjUsMTMgKzY1LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IG51bVNpemVDbGFzc2VzID0gbGFyZ2VDdXRvZmYgLyBzaXplU3RlcDsKICAgICAK
ICAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gbnVsbFZlcnNpb24gPSAwOyAvLyBUaGUgdmVy
c2lvbiBvZiBmcmVzaGx5IGFsbG9jYXRlZCBibG9ja3MuCi0gICAgc3RhdGljIGNvbnN0IEhlYXBW
ZXJzaW9uIGluaXRpYWxWZXJzaW9uID0gMTsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBz
dGFydHMgb3V0IHdpdGguCisgICAgc3RhdGljIGNvbnN0IEhlYXBWZXJzaW9uIGluaXRpYWxWZXJz
aW9uID0gMjsgLy8gVGhlIHZlcnNpb24gdGhhdCB0aGUgaGVhcCBzdGFydHMgb3V0IHdpdGguIFNl
dCB0byBtYWtlIHN1cmUgdGhhdCBuZXh0VmVyc2lvbihudWxsVmVyc2lvbikgIT0gaW5pdGlhbFZl
cnNpb24uCiAgICAgCi0gICAgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVy
c2lvbikKKyAgICBzdGF0aWMgSGVhcFZlcnNpb24gbmV4dFZlcnNpb24oSGVhcFZlcnNpb24gdmVy
c2lvbikKICAgICB7CiAgICAgICAgIHZlcnNpb24rKzsKICAgICAgICAgaWYgKHZlcnNpb24gPT0g
bnVsbFZlcnNpb24pCi0gICAgICAgICAgICB2ZXJzaW9uKys7CisgICAgICAgICAgICB2ZXJzaW9u
ID0gaW5pdGlhbFZlcnNpb247CiAgICAgICAgIHJldHVybiB2ZXJzaW9uOwogICAgIH0KICAgICAK
QEAgLTE3MSw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BhZ2VkT3V0KGRvdWJsZSBk
ZWFkbGluZSk7CiAgICAgCiAgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7
IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9CisgICAgSGVhcFZlcnNpb24gYWxsb2NhdGVkVmVy
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb2NhdGVkVmVyc2lvbjsgfQogCiAgICAgY29uc3Qg
VmVjdG9yPExhcmdlQWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9sYXJnZUFsbG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051
cnNlcnlPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zm
c2V0OyB9CkBAIC0yMTcsNiArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1faGVhcDsK
ICAgICBIZWFwVmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKKyAg
ICBIZWFwVmVyc2lvbiBtX2FsbG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwogICAg
IHNpemVfdCBtX2NhcGFjaXR5OwogICAgIGJvb2wgbV9pc0l0ZXJhdGluZzsKICAgICBib29sIG1f
aXNNYXJraW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Ns
b3RWaXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5jcHAJKHJldmlzaW9uIDIwNjk2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDggKzE5MSw2IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWEKICAgICB2YWxpZGF0ZShj
ZWxsKTsKICNlbmRpZgogICAgIAotICAgIC8vZGF0YUxvZygiICAgIE1hcmtpbmcgIiwgUmF3UG9p
bnRlcihjZWxsKSwgIlxuIik7Ci0gICAgCiAgICAgaWYgKGNlbGwtPmlzTGFyZ2VBbGxvY2F0aW9u
KCkpCiAgICAgICAgIHNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0YWNrKGNlbGwtPmxhcmdlQWxs
b2NhdGlvbigpLCBjZWxsKTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gMjA2OTYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkhl
YXBJdGVyYXRpb25TY29wZS5oIgpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjk2MikKKysrIFNvdXJjZS9X
VEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTYtMTAtMDgg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrZWRCbG9jayBz
aG91bGQga25vdyB3aGF0IG9iamVjdHMgYXJlIGxpdmUgZHVyaW5nIG1hcmtpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjMwOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyByZW1v
dmVzIHRoZSBhdG9taWNpdHkgbW9kZSwgYmVjYXVzZSBpdCdzIG5vdCByZWFsbHkgdXNlZDogaXQg
b25seSBhZmZlY3RzIHRoZQorICAgICAgICBjb25jdXJyZW50QmxhaCBtZXRob2RzLCBidXQgdGhl
aXIgb25seSB1c2VycyB0dXJuIG9uIGF0b21pY2l0eS4gVGhpcyB3YXMgdXNlZnVsIGJlY2F1c2UK
KyAgICAgICAgcHJldmlvdXNseSwgc29tZSBiaW5hcnkgQml0bWFwIG1ldGhvZHMgKGxpa2UgbWVy
Z2UoY29uc3QgQml0bWFwJikpIGNvdWxkbid0IGJlIHVzZWQKKyAgICAgICAgZWZmZWN0aXZlbHkg
aW4gdGhlIEdDIGJlY2F1c2Ugc29tZSBvZiB0aGUgR0MncyBiaXRtYXBzIHNldCB0aGUgYXRvbWlj
IG1vZGUgYW5kIHNvbWUgZGlkbid0LgorICAgICAgICBSZW1vdmluZyB0aGlzIHVzZWxlc3MgbW9k
ZSBpcyB0aGUgYmVzdCBzb2x1dGlvbi4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkZWQgc29t
ZSBuZXcgYmluYXJ5IEJpdG1hcCBtZXRob2RzOiBtZXJnZUFuZENsZWFyKEJpdG1hcCYgb3RoZXIp
IGFuZAorICAgICAgICBzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKS4gVGhleSBwZXJmb3JtIHRo
ZWlyIGFjdGlvbiBvbiAndGhpcycgKGVpdGhlciBtZXJnZSBvciBzZXQsCisgICAgICAgIHJlc3Bl
Y3RpdmVseSkgd2hpbGUgYWxzbyBjbGVhcmluZyB0aGUgY29udGVudHMgb2YgJ290aGVyJy4gVGhp
cyBpcyBncmVhdCBmb3Igb25lIG9mIHRoZSBHQworICAgICAgICBob3QgcGF0aHMuCisKKyAgICAg
ICAgKiB3dGYvQml0bWFwLmg6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Qml0bWFwKToKKyAg
ICAgICAgKFdURjo6V29yZFR5cGU+OjpnZXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnNl
dCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6dGVzdEFuZFNldCk6CisgICAgICAgIChXVEY6
OldvcmRUeXBlPjo6dGVzdEFuZENsZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb25j
dXJyZW50VGVzdEFuZFNldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y29uY3VycmVudFRl
c3RBbmRDbGVhcik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6Y2xlYXIpOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmNsZWFyQWxsKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpuZXh0
UG9zc2libHlVbnNldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Mp
OgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvdW50KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+Ojppc0VtcHR5KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojppc0Z1bGwpOgorICAgICAg
ICAoV1RGOjpXb3JkVHlwZT46Om1lcmdlKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaWx0
ZXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmV4Y2x1ZGUpOgorICAgICAgICAoV1RGOjpX
b3JkVHlwZT46OmZvckVhY2hTZXRCaXQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om1lcmdl
QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OnNldEFuZENsZWFyKToKKyAgICAg
ICAgKFdURjo6PSk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6aGFzaCk6CisKIDIwMTYtMTAt
MDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3aW5kb3cubmF2
aWdhdG9yLmxhbmd1YWdlIGluY29ycmVjdGx5IHJldHVybnMgYWxsIGxvd2VyY2FzZSBzdHJpbmcK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0JpdG1hcC5oCShyZXZpc2lvbiAyMDY5NjIpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAK
LWVudW0gQml0bWFwQXRvbWljTW9kZSB7Ci0gICAgLy8gVGhpcyBtYWtlcyBjb25jdXJyZW50VGVz
dEFuZFNldCBiZWhhdmUganVzdCBsaWtlIHRlc3RBbmRTZXQuCi0gICAgQml0bWFwTm90QXRvbWlj
LAotCi0gICAgLy8gVGhpcyBtYWtlcyBjb25jdXJyZW50VGVzdEFuZFNldCB1c2UgY29tcGFyZUFu
ZFN3YXAsIHNvIHRoYXQgaXQncwotICAgIC8vIGF0b21pYyBldmVuIHdoZW4gdXNlZCBjb25jdXJy
ZW50bHkuCi0gICAgQml0bWFwQXRvbWljCi19OwotCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlID0gQml0bWFwTm90QXRvbWljLCB0eXBlbmFt
ZSBXb3JkVHlwZSA9IHVpbnQzMl90PgordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVu
YW1lIFdvcmRUeXBlID0gdWludDMyX3Q+CiBjbGFzcyBCaXRtYXAgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIApAQCAtNTksOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IG5leHRQb3NzaWJseVVuc2V0KHNpemVfdCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhcihzaXplX3Qp
OwogICAgIHZvaWQgY2xlYXJBbGwoKTsKLSAgICBpbnQ2NF90IGZpbmRSdW5PZlplcm9zKHNpemVf
dCkgY29uc3Q7Ci0gICAgc2l6ZV90IGNvdW50KHNpemVfdCA9IDApIGNvbnN0OworICAgIGludDY0
X3QgZmluZFJ1bk9mWmVyb3Moc2l6ZV90IHJ1bkxlbmd0aCkgY29uc3Q7CisgICAgc2l6ZV90IGNv
dW50KHNpemVfdCBzdGFydCA9IDApIGNvbnN0OwogICAgIHNpemVfdCBpc0VtcHR5KCkgY29uc3Q7
CiAgICAgc2l6ZV90IGlzRnVsbCgpIGNvbnN0OwogICAgIApAQCAtNzEsNiArNjIsOSBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KICAgICB2b2lkIGZvckVhY2hTZXRCaXQo
Y29uc3QgRnVuYyYpIGNvbnN0OwogICAgIAorICAgIHZvaWQgbWVyZ2VBbmRDbGVhcihCaXRtYXAm
KTsKKyAgICB2b2lkIHNldEFuZENsZWFyKEJpdG1hcCYpOworICAgIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQml0
bWFwJikgY29uc3Q7CiAgICAgCkBAIC05MCwyNiArODQsMjYgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OmFycmF5PFdvcmRUeXBlLCB3b3Jkcz4gYml0czsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OkJpdG1hcCgp
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
Qml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Qml0bWFwKCkKIHsKICAgICBjbGVhckFsbCgp
OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKK3RlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxi
aXRtYXBTaXplLCBXb3JkVHlwZT46OmdldChzaXplX3QgbikgY29uc3QKIHsKICAgICByZXR1cm4g
ISEoYml0c1tuIC8gd29yZFNpemVdICYgKG9uZSA8PCAobiAlIHdvcmRTaXplKSkpOwogfQogCi10
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0
eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNN
b2RlLCBXb3JkVHlwZT46OnNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3Jk
VHlwZT46OnNldChzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gfD0gKG9uZSA8
PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRt
YXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBuLCBi
b29sIHZhbHVlKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBl
PgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0KHNpemVfdCBu
LCBib29sIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgc2V0KG4pOwpAQCAtMTE3
LDggKzExMSw4IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAg
ICAgICAgY2xlYXIobik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBB
dG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6dGVzdEFuZFNldChzaXplX3Qg
bikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4p
CiB7CiAgICAgV29yZFR5cGUgbWFzayA9IG9uZSA8PCAobiAlIHdvcmRTaXplKTsKICAgICBzaXpl
X3QgaW5kZXggPSBuIC8gd29yZFNpemU7CkBAIC0xMjcsOCArMTIxLDggQEAgaW5saW5lIGJvb2wg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIFdvcmRUeXBlPjo6dGVzdEFuZENsZWFyKHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwpAQCAtMTM3LDE0ICsxMzEsOSBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25j
dXJyZW50VGVzdEFuZFNldChzaXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0
eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlw
ZT46OmNvbmN1cnJlbnRUZXN0QW5kU2V0KHNpemVfdCBuKQogewotICAgIGlmIChhdG9taWNNb2Rl
ID09IEJpdG1hcE5vdEF0b21pYykKLSAgICAgICAgcmV0dXJuIHRlc3RBbmRTZXQobik7Ci0KLSAg
ICBBU1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBl
IG1hc2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdv
cmRTaXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAg
LTE1NywxNCArMTQ2LDkgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVz
dEFuZENsZWFyKHNpemVfdCBuKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y29u
Y3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBC
aXRtYXBOb3RBdG9taWMpCi0gICAgICAgIHJldHVybiB0ZXN0QW5kQ2xlYXIobik7Ci0KLSAgICBB
U1NFUlQoYXRvbWljTW9kZSA9PSBCaXRtYXBBdG9taWMpOwotICAgIAogICAgIFdvcmRUeXBlIG1h
c2sgPSBvbmUgPDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRT
aXplOwogICAgIFdvcmRUeXBlKiB3b3JkUHRyID0gYml0cy5kYXRhKCkgKyBpbmRleDsKQEAgLTE3
NywyOCArMTYxLDI4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1h
cEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpjbGVhcihzaXplX3QgbikK
K3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2
b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyKHNpemVfdCBuKQogewogICAg
IGJpdHNbbiAvIHdvcmRTaXplXSAmPSB+KG9uZSA8PCAobiAlIHdvcmRTaXplKSk7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6Y2xlYXJBbGwoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5
cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBl
Pjo6Y2xlYXJBbGwoKQogewogICAgIG1lbXNldChiaXRzLmRhdGEoKSwgMCwgc2l6ZW9mKGJpdHMp
KTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRv
bWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFy
dCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bmV4dFBvc3NpYmx5
VW5zZXQoc2l6ZV90IHN0YXJ0KSBjb25zdAogewogICAgIGlmICghfmJpdHNbc3RhcnQgLyB3b3Jk
U2l6ZV0pCiAgICAgICAgIHJldHVybiAoKHN0YXJ0IC8gd29yZFNpemUpICsgMSkgKiB3b3JkU2l6
ZTsKICAgICByZXR1cm4gc3RhcnQgKyAxOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBpbnQ2NF90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbmRS
dW5PZlplcm9zKHNpemVfdCBydW5MZW5ndGgpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFw
U2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBjb25zdAogewog
ICAgIGlmICghcnVuTGVuZ3RoKSAKICAgICAgICAgcnVuTGVuZ3RoID0gMTsgCkBAIC0yMTcsOCAr
MjAxLDggQEAgaW5saW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pYwogICAgIHJl
dHVybiAtMTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01v
ZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgc2l6ZV90IEJpdG1hcDxi
aXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29u
c3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Y291bnQoc2l6ZV90IHN0YXJ0
KSBjb25zdAogewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIGZvciAoIDsgKHN0YXJ0ICUg
d29yZFNpemUpOyArK3N0YXJ0KSB7CkBAIC0yMzAsOCArMjE0LDggQEAgaW5saW5lIHNpemVfdCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9k
ZSwgV29yZFR5cGU+Ojppc0VtcHR5KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXpl
LCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdv
cmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKQogICAgICAgICBpZiAoYml0c1tpXSkKQEAgLTIzOSw4ICsyMjMsOCBAQCBpbmxp
bmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01v
ZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFw
U2l6ZSwgV29yZFR5cGU+Ojppc0Z1bGwoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKH5iaXRzW2ldKQpAQCAtMjQ4LDMwICsyMzIs
MzAgQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTQogICAgIHJldHVy
biB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9k
ZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRt
YXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46Om1lcmdlKGNvbnN0IEJpdG1hcCYgb3RoZXIp
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjptZXJnZShjb25zdCBCaXRtYXAmIG90
aGVyKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAg
Yml0c1tpXSB8PSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmZpbHRlcihj
b25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6Zmls
dGVyKGNvbnN0IEJpdG1hcCYgb3RoZXIpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3
b3JkczsgKytpKQogICAgICAgICBiaXRzW2ldICY9IG90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6ZXhjbHVkZShjb25zdCBCaXRtYXAmIG90aGVyKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAmPSB+b3Ro
ZXIuYml0c1tpXTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21p
Y01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotaW5s
aW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Zm9yRWFj
aFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1h
cFNpemUsIFdvcmRUeXBlPjo6Zm9yRWFjaFNldEJpdChjb25zdCBGdW5jJiBmdW5jKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBXb3Jk
VHlwZSB3b3JkID0gYml0c1tpXTsKQEAgLTI4Niw4ICsyNzAsMjYgQEAgaW5saW5lIHZvaWQgQml0
bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJp
dG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+
Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpv
cGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6
ZSwgV29yZFR5cGU+OjptZXJnZUFuZENsZWFyKEJpdG1hcCYgb3RoZXIpCit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7CisgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIu
Yml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7CisgICAgfQorfQorCit0ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRBbmRDbGVhcihCaXRtYXAmIG90aGVyKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgeworICAgICAgICBiaXRzW2ld
ID0gb3RoZXIuYml0c1tpXTsKKyAgICAgICAgb3RoZXIuYml0c1tpXSA9IDA7CisgICAgfQorfQor
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
Ym9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1h
cCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytp
KSB7CiAgICAgICAgIGlmIChiaXRzW2ldICE9IG90aGVyLmJpdHNbaV0pCkBAIC0yOTYsMTQgKzI5
OCwxNCBAQCBpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNN
b2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3IhPShjb25zdCBCaXRtYXAm
IG90aGVyKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRU
eXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6b3BlcmF0b3Ih
PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUg
YXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdW5zaWduZWQgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0Cit0ZW1wbGF0ZTxz
aXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdW5zaWduZWQgQml0
bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCg==
</data>
<flag name="review"
          id="314175"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291308</attachid>
            <date>2016-10-11 15:37:22 -0700</date>
            <delta_ts>2016-10-11 15:37:22 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58961</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBA
CisyMDE2LTEwLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TWFya2VkQmxvY2sgc2hvdWxkIGtub3cgd2hhdCBvYmplY3RzIGFyZSBsaXZlIGR1cmluZyBtYXJr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIz
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKyAgICAgICAgCisgICAg
ICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB3ZSB3b3VsZCBmb3JnZXQgd2hpY2ggb2JqZWN0cyBhcmUg
bGl2ZSB0aGUgbW9tZW50IHdlIHN0YXJ0ZWQgY29sbGVjdGlvbi4KKyAgICAgICAgVGhhdCdzIGJl
Y2F1c2UgdGhlIGZsaXAgYXQgdGhlIGJlZ2lubmluZyBjbGVhcnMgYWxsIG1hcmsgYml0cy4KKyAg
ICAgICAgCisgICAgICAgIEJ1dCB3ZSBhbHJlYWR5IGhhdmUgYSBmYWNpbGl0eSBmb3IgdHJhY2tp
bmcgb2JqZWN0cyB0aGF0IGFyZSBsaXZlLWJ1dC1ub3QtbWFya2VkLiBJdCdzIGNhbGxlZAorICAg
ICAgICBuZXdseUFsbG9jYXRlZC4gU28sIGluc3RlYWQgb2YgY2xlYXJpbmcgbWFyayBiaXRzLCB3
ZSB3YW50IHRvIGp1c3QgdHJhbnNmZXIgdGhlbSB0bworICAgICAgICBuZXdseUFsbG9jYXRlZC4g
VGhlbiB3ZSB3YW50IHRvIGNsZWFyIGFsbCBuZXdseUFsbG9jYXRlZCBhZnRlciBHQy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyBzdWNoIGFuIGFwcHJvYWNoLCBhbG9uZyB3aXRo
IGEgdmVyc2lvbmluZyBvcHRpbWl6YXRpb24gZm9yIG5ld2x5QWxsb2NhdGVkLgorICAgICAgICBJ
bnN0ZWFkIG9mIHdhbGtpbmcgdGhlIHdob2xlIGhlYXAgdG8gY2xlYXIgbmV3bHlBbGxvY2F0ZWQg
Yml0cyBhdCB0aGUgZW5kIG9mIHRoZSBHQywgd2UgYnVtcAorICAgICAgICB0aGUgbmV3bHlBbGxv
Y2F0ZWRWZXJzaW9uLCB3aGljaCBjYXVzZXMgTWFya2VkQmxvY2sgdG8gdHJlYXQgbmV3bHlBbGxv
Y2F0ZWQgYXMgaWYgaXQgd2FzCisgICAgICAgIGNsZWFyLgorICAgICAgICAKKyAgICAgICAgV2Ug
Y291bGQgaGF2ZSBldmVuIGF2b2lkZWQgYWxsb2NhdGluZyBuZXdseUFsbG9jYXRlZCBpbiBtb3N0
IGNhc2VzLCBzaW5jZSBlbXBpcmljYWxseSBtb3N0CisgICAgICAgIGJsb2NrcyBhcmUgZWl0aGVy
IGNvbXBsZXRlbHkgZW1wdHkgb3IgY29tcGxldGVseSBmdWxsLiBBbiBlYXJsaWVyIHZlcnNpb24g
b2YgdGhpcyBwYXRjaCBkaWQKKyAgICAgICAgdGhpcywgYnV0IGl0IHdhcyBub3QgYmV0dGVyIHRo
YW4gdGhpcyBwYXRjaC4gSW4gZmFjdCwgaXQgc2VlbWVkIHRvIGFjdHVhbGx5IGJlIHdvcnNlIGZv
ciBQTFQKKyAgICAgICAgYW5kIG1lbWJ1c3Rlci4KKyAgICAgICAgCisgICAgICAgIFRvIHZhbGlk
YXRlIHRoaXMgY2hhbmdlLCB3ZSBub3cgcnVuIHRoZSBjb25zZXJ2YXRpdmUgc2NhbiBhZnRlciB0
aGUgYmVnaW5NYXJraW5nIGZsaXAuIEFuZCBpdAorICAgICAgICB0b3RhbGx5IHdvcmtzIQorICAg
ICAgICAKKyAgICAgICAgVGhpcyBpcyBhIGh1Z2Ugc3RlcCB0b3dhcmRzIGNvbmN1cnJlbnQgR0Mu
IEl0IG1lYW5zIHRoYXQgd2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBydW4gdGhlCisgICAgICAgIGFs
bG9jYXRvciB3aGlsZSBtYXJraW5nLiBTaW5jZSB3ZSBhbHJlYWR5IHNlcGFyYXRlbHkgbWFkZSBp
dCBwb3NzaWJsZSB0byBydW4gdGhlIGJhcnJpZXIKKyAgICAgICAgd2hpbGUgbWFya2luZywgdGhp
cyBtZWFucyB0aGF0IHdlJ3JlIHByZXR0eSBtdWNoIHJlYWR5IGZvciBzb21lIHNlcmlvdXMgY29u
Y3VycmVuY3kgYWN0aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhcHBlYXJzIHRvIGJlIHBl
cmYtbmV1dHJhbCBhbmQgc3BhY2UtbmV1dHJhbC4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrU2V0OjptYXJrKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldC5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhl
Y3V0aW5nKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrU2V0OjpjbGVhckN1cnJlbnRseUV4ZWN1
dGluZyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja1NldDo6d3JpdGVCYXJyaWVyQ3VycmVudGx5
RXhlY3V0aW5nQ29kZUJsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db2RlQmxvY2tT
ZXQuaDoKKyAgICAgICAgKiBoZWFwL0NvZGVCbG9ja1NldElubGluZXMuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkNvZGVCbG9ja1NldDo6bWFyayk6CisgICAgICAgICogaGVhcC9Db25zZXJ2YXRp
dmVSb290cy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bWFya1Jvb3RzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6YmVnaW5NYXJraW5nKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6Y29sbGVjdEltcGwpOgorICAgICAgICAoSlNDOjpIZWFwOjp3cml0ZUJh
cnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKToKKyAgICAgICAgKiBoZWFwL0hlYXAu
aDoKKyAgICAgICAgKiBoZWFwL0hlYXBVdGlsLmg6CisgICAgICAgIChKU0M6OkhlYXBVdGlsOjpm
aW5kR0NPYmplY3RQb2ludGVyc0Zvck1hcmtpbmcpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxs
b2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KToK
KyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6
c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpIYW5kbGU6OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OkhhbmRsZTo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpyZXN1bWVBbGxvY2F0aW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OmFib3V0VG9NYXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OnJlc2V0QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OnJlc2V0TWFya3Mp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6c2V0TmVlZHNEZXN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZEFkZFRvQWxsb2NhdG9yKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Om5ld2x5QWxsb2NhdGVkVmVyc2lvbik6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVk
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZXds
eUFsbG9jYXRlZCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6Y2VsbHNQZXJCbG9jayk6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZSk6CisgICAgICAgIChKU0M6
Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc05ld2x5QWxsb2NhdGVkU3RhbGUpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6SGFuZGxlOjpoYXNBbnlOZXdseUFsbG9jYXRlZFdpdGhTd2VlcCk6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6Omhhc0FueU5ld2x5QWxsb2NhdGVkKToKKyAgICAg
ICAgKEpTQzo6TWFya2VkQmxvY2s6OmhlYXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6
c3BhY2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGFjZSk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OmJlZ2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQpOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6Om5leHRWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om5ld2x5QWxsb2Nh
dGVkVmVyc2lvbik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjptYXJraW5nVmVyc2lvbik6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKwogMjAx
Ni0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRE9NSklUXSBET01KSVQ6OlBhdGNocG9pbnQgc2hvdWxkIGhhdmUgYSB3YXkgdG8gcmVjZWl2
ZSBjb25zdGFudCBmb2xkZWQgYXJndW1lbnRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ0NSw2
ICs0NDUsNyBAQAogCQkwRjY0QjI3OTFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEIyNzcxQTc5
NTdCMjAwNkU0RTY2IC8qIENhbGxFZGdlLmNwcCAqLzsgfTsKIAkJMEY2NEIyN0ExQTc5NTdCMjAw
NkU0RTY2IC8qIENhbGxFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjY0QjI3ODFBNzk1N0IyMDA2RTRFNjYgLyogQ2FsbEVkZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY0RUFGMzFDNEVD
RDA2MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NEVBRjIxQzRFQ0QwNjAwNjIxRTlCIC8qIEFpckFyZ0lu
bGluZXMuaCAqLzsgfTsKKwkJMEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1Nl
dElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxpbmVzLmggKi87IH07
CiAJCTBGNjY2RUMwMTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjY2NkVCRTE4MzU2NkY5MDBEMDE3RjEgLyogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NjY2RUMxMTgzNTY2RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NjZFQkYxODM1NjZGOTAw
RDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2NjZFQzYxODM1NjcyQjAwRDAxN0YxIC8qIERG
R0F2YWlsYWJpbGl0eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjY2NkVDMjE4MzU2NzJCMDBEMDE3RjEgLyogREZHQXZhaWxhYmlsaXR5LmNwcCAq
LzsgfTsKQEAgLTI3MDksNiArMjcxMCw3IEBACiAJCTBGNjRCMjc3MUE3OTU3QjIwMDZFNEU2NiAv
KiBDYWxsRWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxs
RWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjRCMjc4MUE3OTU3QjIw
MDZFNEU2NiAvKiBDYWxsRWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsRWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjY0RUFGMjFDNEVDRDA2
MDA2MjFFOUIgLyogQWlyQXJnSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBBaXJBcmdJbmxpbmVzLmg7IHBhdGggPSBiMy9haXIvQWlyQXJnSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjY2NENFNzFEQTMwNEVEMDBCMDBBMTEgLyogQ29k
ZUJsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2Rl
QmxvY2tTZXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjY2RUJF
MTgzNTY2RjkwMEQwMTdGMSAvKiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NjZFQkYxODM1NjZGOTAw
RDAxN0YxIC8qIEZ1bGxCeXRlY29kZUxpdmVuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZ1bGxCeXRlY29kZUxpdmVuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNjY2RUMyMTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFpbGFiaWxpdHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXZhaWxhYmlsaXR5LmNwcDsg
cGF0aCA9IGRmZy9ERkdBdmFpbGFiaWxpdHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTMyNSw2ICs1MzI3LDcgQEAKIAkJCQkwRjFDM0REOTFCQkNFMDlFMDBFNTIzRTQgLyog
Q2VsbFN0YXRlLmggKi8sCiAJCQkJMEZEOEEzMTExN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9j
a1NldC5jcHAgKi8sCiAJCQkJMEZEOEEzMTIxN0Q0MzI2QzAwQ0EyQzQwIC8qIENvZGVCbG9ja1Nl
dC5oICovLAorCQkJCTBGNjY0Q0U3MURBMzA0RUQwMEIwMEExMSAvKiBDb2RlQmxvY2tTZXRJbmxp
bmVzLmggKi8sCiAJCQkJMTQ2QjE0REIxMkVCNUIxMjAwMUJFQzFCIC8qIENvbnNlcnZhdGl2ZVJv
b3RzLmNwcCAqLywKIAkJCQkxNDlEQUFGMjEyRUI1NTlEMDA4M0IxMkIgLyogQ29uc2VydmF0aXZl
Um9vdHMuaCAqLywKIAkJCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAg
Ki8sCkBAIC03OTYwLDYgKzc5NjMsNyBAQAogCQkJCUJDMThDNDFDMEUxNkY1Q0QwMEIzNDQ2MCAv
KiBKU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTdDRjQ1
OTE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3RDgw
MUE5MTg4MEQ2QTgwMDI2QzM5QiAvKiBKU0NCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY2NjRDRTgxREEzMDRFRjAwQjAwQTExIC8qIENvZGVCbG9ja1NldElubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMTE2N0RBMEUxOUJDQzkwMDgwNjZERCAvKiBKU0NlbGwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOTc0OTcxMTY4N0FERTQwMEE0RkY2QSAvKiBKU0NlbGxJbmxpbmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjFERDg0QTE4QTk0NUJFMDAyNkYzRkEgLyogSlNDSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDYgQEAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIK
LSNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5j
bHVkZSAiQ29kZVR5cGUuaCIKICNpbmNsdWRlICJDb21wYWN0SklUQ29kZU1hcC5oIgpAQCAtNzYs
NiArNzUsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczsKK2NsYXNzIENvZGVCbG9ja1NldDsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0xMzExLDM4
ICsxMzExLDYgQEAgaW5saW5lIHZvaWQgQ29kZUJsb2NrOjpjbGVhclZpc2l0V2Vha2x5SAogICAg
IG1fdmlzaXRXZWFrbHlIYXNCZWVuQ2FsbGVkLnN0b3JlKGZhbHNlLCBzdGQ6Om1lbW9yeV9vcmRl
cl9yZWxheGVkKTsKIH0KIAotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExv
Y2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2FuZGlkYXRlQ29kZUJsb2NrKQotewotICAgIEFTU0VS
VChtX2xvY2suaXNMb2NrZWQoKSk7Ci0gICAgLy8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQg
LTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBieSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgotICAg
IHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVD
b2RlQmxvY2spOwotICAgIAotICAgIC8vIFRoaXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5h
c3R5IGNhc2VzIGluIG9uZSBnby4KLSAgICAvLyAwICsgMSA9IDEKLSAgICAvLyAtMSArIDEgPSAw
Ci0gICAgaWYgKHZhbHVlICsgMSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9j
ayk7IAotICAgIGlmICghbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1f
bmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2RlQmxvY2spKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsKLX0KLQotaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0
OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKLXsKLSAgICBp
ZiAoIWNvZGVCbG9jaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVHJ5IHRvIHJlY292ZXIg
Z3JhY2VmdWxseSBpZiB3ZSBmb3JnZXQgdG8gZXhlY3V0ZSBhIGJhcnJpZXIgZm9yIGEKLSAgICAv
LyBDb2RlQmxvY2sgdGhhdCBkb2VzIHZhbHVlIHByb2ZpbGluZy4gVGhpcyBpcyBwcm9iYWJseSBv
dmVya2lsbCwgYnV0IHdlCi0gICAgLy8gaGF2ZSBhbHdheXMgZG9uZSBpdC4KLSAgICBIZWFwOjpo
ZWFwKGNvZGVCbG9jayktPndyaXRlQmFycmllcihjb2RlQmxvY2spOwotCi0gICAgbV9jdXJyZW50
bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjpmb3JFYWNoQ29kZUJsb2NrKEZ1bmN0
b3ImJiBmdW5jdG9yKQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHJldmlzaW9uIDIwNzE2NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNywxNiArMTA3LDE3IEBAIGJvb2wgQ29kZUJsb2NrU2V0Ojpjb250YWlucyhjb25z
dCBMb2NrSG8KICAgICByZXR1cm4gbV9vbGRDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykg
fHwgbV9uZXdDb2RlQmxvY2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgfHwgbV9jdXJyZW50bHlFeGVj
dXRpbmcuY29udGFpbnMoY29kZUJsb2NrKTsKIH0KIAotdm9pZCBDb2RlQmxvY2tTZXQ6OndyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoSGVhcCogaGVhcCkKK3ZvaWQgQ29k
ZUJsb2NrU2V0Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmcoSGVhcCogaGVhcCkKIHsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV9sb2NrKTsKICAgICBpZiAodmVyYm9zZSkKICAgICAg
ICAgZGF0YUxvZygiUmVtZW1iZXJpbmcgIiwgbV9jdXJyZW50bHlFeGVjdXRpbmcuc2l6ZSgpLCAi
IGNvZGUgYmxvY2tzLlxuIik7CiAgICAgZm9yIChDb2RlQmxvY2sqIGNvZGVCbG9jayA6IG1fY3Vy
cmVudGx5RXhlY3V0aW5nKQogICAgICAgICBoZWFwLT53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsK
K30KIAotICAgIC8vIEl0J3Mgc2FmZSB0byBjbGVhciB0aGlzIHNldCBiZWNhdXNlIHdlIHdvbid0
IGRlbGV0ZSB0aGUgQ29kZUJsb2NrcwotICAgIC8vIGluIGl0IHVudGlsIHRoZSBuZXh0IEdDLCBh
bmQgd2UnbGwgcmVjb21wdXRlIGl0IGF0IHRoYXQgdGltZS4KK3ZvaWQgQ29kZUJsb2NrU2V0Ojpj
bGVhckN1cnJlbnRseUV4ZWN1dGluZygpCit7CiAgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuY2xl
YXIoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0
LmgJKHJldmlzaW9uIDIwNzE2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVC
bG9ja1NldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICAvLyBBZGQgYWxsIGN1cnJlbnRseSBleGVjdXRpbmcgQ29kZUJsb2NrcyB0byB0aGUgcmVt
ZW1iZXJlZCBzZXQgdG8gYmUgCiAgICAgLy8gcmUtc2Nhbm5lZCBkdXJpbmcgdGhlIG5leHQgY29s
bGVjdGlvbi4KLSAgICB2b2lkIHdyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9j
a3MoSGVhcCopOworICAgIHZvaWQgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nKEhlYXAq
KTsKKworICAgIHZvaWQgY2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsKIAogICAgIGJvb2wgY29u
dGFpbnMoY29uc3QgTG9ja0hvbGRlciYsIHZvaWQqIGNhbmRpZGF0ZUNvZGVCbG9jayk7CiAgICAg
TG9jayYgZ2V0TG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29kZUJsb2NrU2V0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvZGVCbG9ja1NldElubGluZXMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db2RlQmxvY2tTZXRJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIHZv
aWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImIGxvY2tlciwgdm9pZCogY2Fu
ZGlkYXRlQ29kZUJsb2NrKQoreworICAgIEFTU0VSVChtX2xvY2suaXNMb2NrZWQoKSk7CisgICAg
Ly8gV2UgaGF2ZSB0byBjaGVjayBmb3IgMCBhbmQgLTEgYmVjYXVzZSB0aG9zZSBhcmUgdXNlZCBi
eSB0aGUgSGFzaE1hcCBhcyBtYXJrZXJzLgorICAgIHVpbnRwdHJfdCB2YWx1ZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihjYW5kaWRhdGVDb2RlQmxvY2spOworICAgIAorICAgIC8vIFRo
aXMgY2hlY2tzIGZvciBib3RoIG9mIHRob3NlIG5hc3R5IGNhc2VzIGluIG9uZSBnby4KKyAgICAv
LyAwICsgMSA9IDEKKyAgICAvLyAtMSArIDEgPSAwCisgICAgaWYgKHZhbHVlICsgMSA8PSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YXRpY19jYXN0
PENvZGVCbG9jayo+KGNhbmRpZGF0ZUNvZGVCbG9jayk7IAorICAgIGlmICghbV9vbGRDb2RlQmxv
Y2tzLmNvbnRhaW5zKGNvZGVCbG9jaykgJiYgIW1fbmV3Q29kZUJsb2Nrcy5jb250YWlucyhjb2Rl
QmxvY2spKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXJrKGxvY2tlciwgY29kZUJsb2NrKTsK
K30KKworaW5saW5lIHZvaWQgQ29kZUJsb2NrU2V0OjptYXJrKGNvbnN0IExvY2tIb2xkZXImLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBpZiAoIWNvZGVCbG9jaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jdXJyZW50bHlFeGVjdXRpbmcuYWRkKGNvZGVCbG9jayk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25z
ZXJ2YXRpdmVSb290cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SGVhcFV0aWwuaCIKICNpbmNsdWRlICJKSVRTdHViUm91dGluZVNldC5oIgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDIwNzE2NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBA
CiAjaW5jbHVkZSAiSGVhcC5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
Q29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNsdWRl
ICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIKQEAg
LTM4OCwxOCArMzg5LDggQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1l
LAogCiAgICAgSGVhcFJvb3RWaXNpdG9yIGhlYXBSb290VmlzaXRvcihtX3Nsb3RWaXNpdG9yKTsK
ICAgICAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBjb25zZXJ2YXRpdmVSb290cygqdGhpcyk7CiAg
ICAgewogICAgICAgICBUaW1pbmdTY29wZSBwcmVDb252ZXJnZW5jZVRpbWluZ1Njb3BlKCp0aGlz
LCAiSGVhcDo6bWFya1Jvb3RzIGJlZm9yZSBjb252ZXJnZW5jZSIpOwotICAgICAgICAvLyBXZSBn
YXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBjbGVhcmluZyBtYXJrIGJpdHMgYmVjYXVz
ZSBjb25zZXJ2YXRpdmUKLSAgICAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1hcmsgYml0cyB0
byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICAgICAgewotICAg
ICAgICAgICAgVGltaW5nU2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhl
YXA6Om1hcmtSb290cyBjb25zZXJ2YXRpdmUgc2NhbiIpOwotICAgICAgICAgICAgU3VwZXJTYW1w
bGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgICAgICAgICAgZ2F0aGVyU3Rh
Y2tSb290cyhjb25zZXJ2YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVT
YXZlZFJlZ2lzdGVycyk7Ci0gICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0
aXZlUm9vdHMpOwotICAgICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZh
dGl2ZVJvb3RzKTsKLSAgICAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIERG
Rzo6cmVtZW1iZXJDb2RlQmxvY2tzKCptX3ZtKTsKQEAgLTQ2Myw5ICs0NTQsMjQgQEAgdm9pZCBI
ZWFwOjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLAogICAgICAgICBQYXJhbGxlbE1vZGVF
bmFibGVyIGVuYWJsZXIobV9zbG90VmlzaXRvcik7CiAgICAgICAgIAogICAgICAgICBtX3Nsb3RW
aXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgVGltaW5n
U2NvcGUgcHJlQ29udmVyZ2VuY2VUaW1pbmdTY29wZSgqdGhpcywgIkhlYXA6Om1hcmtSb290cyBj
b25zZXJ2YXRpdmUgc2NhbiIpOworICAgICAgICAgICAgQ29uc2VydmF0aXZlUm9vdHMgY29uc2Vy
dmF0aXZlUm9vdHMoKnRoaXMpOworICAgICAgICAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOworICAgICAgICAgICAgZ2F0aGVyU3RhY2tSb290cyhjb25zZXJ2
YXRpdmVSb290cywgc3RhY2tPcmlnaW4sIHN0YWNrVG9wLCBjYWxsZWVTYXZlZFJlZ2lzdGVycyk7
CisgICAgICAgICAgICBnYXRoZXJKU1N0YWNrUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAg
ICAgICAgICAgZ2F0aGVyU2NyYXRjaEJ1ZmZlclJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKKyAg
ICAgICAgICAgIHZpc2l0Q29uc2VydmF0aXZlUm9vdHMoY29uc2VydmF0aXZlUm9vdHMpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIGRvIHRoaXMgdG8gY29uc2VydmF0
aXZlbHkgZW5zdXJlIHRoYXQgd2UgcmVzY2FuIGFueSBjb2RlIGJsb2NrcyB0aGF0IGFyZQorICAg
ICAgICAgICAgLy8gcnVubmluZyByaWdodCBub3cuIEhvd2V2ZXIsIHdlIG5lZWQgdG8gYmUgc3Vy
ZSB0byBkbyBpdCAqYWZ0ZXIqIHdlIG1hcmsgdGhlIGNvZGUgYmxvY2sKKyAgICAgICAgICAgIC8v
IHNvIHRoYXQgd2Uga25vdyBmb3Igc3VyZSBpZiBpdCByZWFsbHkgbmVlZHMgYSBiYXJyaWVyLgor
ICAgICAgICAgICAgbV9jb2RlQmxvY2tzLT53cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmco
dGhpcyk7CisgICAgICAgIH0KKwogICAgICAgICB2aXNpdEV4dGVybmFsUmVtZW1iZXJlZFNldCgp
OwogICAgICAgICB2aXNpdFNtYWxsU3RyaW5ncygpOwotICAgICAgICB2aXNpdENvbnNlcnZhdGl2
ZVJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKICAgICAgICAgdmlzaXRQcm90ZWN0ZWRPYmplY3Rz
KGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0QXJndW1lbnRCdWZmZXJzKGhlYXBSb290
VmlzaXRvcik7CiAgICAgICAgIHZpc2l0RXhjZXB0aW9uKGhlYXBSb290VmlzaXRvcik7CkBAIC01
MjQsMTEgKzUzMCw2IEBAIHZvaWQgSGVhcDo6YmVnaW5NYXJraW5nKCkKICAgICAgICAgbV9jb2Rl
QmxvY2tzLT5jbGVhck1hcmtzRm9yRnVsbENvbGxlY3Rpb24oKTsKICAgICAKICAgICB7Ci0gICAg
ICAgIFRpbWluZ1Njb3BlIGNsZWFyTmV3bHlBbGxvY2F0ZWRUaW1pbmdTY29wZSgqdGhpcywgIm1f
b2JqZWN0U3BhY2UuY2xlYXJOZXdseUFsbG9jYXRlZCIpOwotICAgICAgICBtX29iamVjdFNwYWNl
LmNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgewogICAgICAgICBUaW1p
bmdTY29wZSBjbGVhck1hcmtzVGltaW5nU2NvcGUoKnRoaXMsICJtX29iamVjdFNwYWNlLmJlZ2lu
TWFya2luZyIpOwogICAgICAgICBtX29iamVjdFNwYWNlLmJlZ2luTWFya2luZygpOwogICAgIH0K
QEAgLTEwNTksNyArMTA2MCw4IEBAIE5FVkVSX0lOTElORSB2b2lkIEhlYXA6OmNvbGxlY3RJbXBs
KEhlYXAKICAgICBkZWxldGVTb3VyY2VQcm92aWRlckNhY2hlcygpOwogCiAgICAgbm90aWZ5SW5j
cmVtZW50YWxTd2VlcGVyKCk7Ci0gICAgd3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0aW5nQ29k
ZUJsb2NrcygpOworICAgIG1fY29kZUJsb2Nrcy0+d3JpdGVCYXJyaWVyQ3VycmVudGx5RXhlY3V0
aW5nKHRoaXMpOworICAgIG1fY29kZUJsb2Nrcy0+Y2xlYXJDdXJyZW50bHlFeGVjdXRpbmcoKTsK
IAogICAgIHByZXBhcmVGb3JBbGxvY2F0aW9uKCk7CiAgICAgdXBkYXRlQWxsb2NhdGlvbkxpbWl0
cygpOwpAQCAtMTIwMSwxMSArMTIwMyw2IEBAIHZvaWQgSGVhcDo6bm90aWZ5SW5jcmVtZW50YWxT
d2VlcGVyKCkKICAgICBtX3N3ZWVwZXItPnN0YXJ0U3dlZXBpbmcoKTsKIH0KIAotdm9pZCBIZWFw
Ojp3cml0ZUJhcnJpZXJDdXJyZW50bHlFeGVjdXRpbmdDb2RlQmxvY2tzKCkKLXsKLSAgICBtX2Nv
ZGVCbG9ja3MtPndyaXRlQmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3ModGhpcyk7
Ci19Ci0KIHZvaWQgSGVhcDo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewogICAgIG1fb2JqZWN0
U3BhY2UucHJlcGFyZUZvckFsbG9jYXRpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHJldmlzaW9uIDIwNzE2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDcgKzM0OSw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzbmFwc2hvdFVuc3dlcHQoKTsKICAgICB2b2lkIGRlbGV0ZVNvdXJjZVByb3ZpZGVyQ2FjaGVz
KCk7CiAgICAgdm9pZCBub3RpZnlJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKLSAgICB2b2lkIHdyaXRl
QmFycmllckN1cnJlbnRseUV4ZWN1dGluZ0NvZGVCbG9ja3MoKTsKICAgICB2b2lkIHByZXBhcmVG
b3JBbGxvY2F0aW9uKCk7CiAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXplcnMoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBVdGlsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mIHNl
dCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKICAgICAgICAgCisgICAgICAg
IEFTU0VSVChoZWFwLm9iamVjdFNwYWNlKCkuaXNNYXJraW5nKCkpOworICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBpc01hcmtpbmcgPSB0cnVlOworICAgICAgICAKICAgICAgICAgY2hhciogcG9p
bnRlciA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQb2ludGVyKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0IGNvdWxkIHBvaW50IHRvIGEgbGFyZ2UgYWxsb2NhdGlvbi4KQEAgLTg1LDcgKzg4
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0Nh
bmRpZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
Y2VsbEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJl
dmlvdXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5k
bGUoKS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
ZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBwcmV2
aW91c1BvaW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFu
ZGxlKCkuaXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgaXNNYXJraW5nLCBwcmV2aW91c1BvaW50
ZXIpKQogICAgICAgICAgICAgICAgICAgICBmdW5jKHByZXZpb3VzUG9pbnRlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCog
cG9pbnRlcikgewotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2Vs
bChtYXJraW5nVmVyc2lvbiwgcG9pbnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5o
YW5kbGUoKS5pc0xpdmVDZWxsKG1hcmtpbmdWZXJzaW9uLCBpc01hcmtpbmcsIHBvaW50ZXIpKQog
ICAgICAgICAgICAgICAgIGZ1bmMocG9pbnRlcik7CiAgICAgICAgIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5jcHAJKHJldmlz
aW9uIDIwNzE2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDExICs1Myw4IEBAIGJvb2wgTWFya2VkQWxsb2Nh
dG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICB1bnNpZ25lZCBpdGVyc1NpbmNlTGFzdFRpbWVD
aGVjayA9IDA7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fYmxvY2tzLnNp
emUoKTsgKytpbmRleCkgewogICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1f
YmxvY2tzW2luZGV4XTsKLSAgICAgICAgaWYgKGJsb2NrKSB7Ci0gICAgICAgICAgICAvLyBGb3Jj
ZXMgdXMgdG8gdG91Y2ggdGhlIG1lbW9yeSBvZiB0aGUgYmxvY2ssIGJ1dCBoYXMgbm8gc2VtYW50
aWMgZWZmZWN0LgotICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJrc1N0YWxlKCkpCi0gICAg
ICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVzZXRNYXJraW5nVmVyc2lvbigpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChibG9jaykKKyAgICAgICAgICAgIGJsb2NrLT5ibG9jaygpLnVwZGF0
ZU5lZWRzRGVzdHJ1Y3Rpb24oKTsKICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsK
ICAgICAgICAgaWYgKGl0ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNr
UmVzb2x1dGlvbikgewogICAgICAgICAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0gV1RGOjptb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKQEAgLTQzNiw3ICs0MzMsOCBAQCB2b2lkIE1hcmtl
ZEFsbG9jYXRvcjo6c3dlZXAoKQogewogICAgIG1fdW5zd2VwdC5mb3JFYWNoU2V0Qml0KAogICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgewotICAgICAgICAgICAgbV9ibG9ja3NbaW5kZXhdLT5z
d2VlcCgpOworICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nr
c1tpbmRleF07CisgICAgICAgICAgICBibG9jay0+c3dlZXAoKTsKICAgICAgICAgfSk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDIwNzE2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBN
YXJrZWRCbG9jazo6dHJ5Q3JlCiAKIE1hcmtlZEJsb2NrOjpIYW5kbGU6OkhhbmRsZShIZWFwJiBo
ZWFwLCB2b2lkKiBibG9ja1NwYWNlKQogICAgIDogbV93ZWFrU2V0KGhlYXAudm0oKSwgQ2VsbENv
bnRhaW5lcigpKQorICAgICwgbV9uZXdseUFsbG9jYXRlZFZlcnNpb24oTWFya2VkU3BhY2U6Om51
bGxWZXJzaW9uKQogewogICAgIG1fYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJsb2NrU3BhY2UpIE1h
cmtlZEJsb2NrKCpoZWFwLnZtKCksICp0aGlzKTsKICAgICAKQEAgLTEyNSw3ICsxMjYsNyBAQCBG
cmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAgZm9yIChzaXplX3Qg
aSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJDZWxsKSB7CiAg
ICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkKICAgICAgICAgICAgICYmICgobWFya3NN
b2RlID09IE1hcmtzTm90U3RhbGUgJiYgYmxvY2subV9tYXJrcy5nZXQoaSkpCi0gICAgICAgICAg
ICAgICAgfHwgKG5ld2x5QWxsb2NhdGVkTW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCAmJiBtX25l
d2x5QWxsb2NhdGVkLT5nZXQoaSkpKSkgeworICAgICAgICAgICAgICAgIHx8IChuZXdseUFsbG9j
YXRlZE1vZGUgPT0gSGFzTmV3bHlBbGxvY2F0ZWQgJiYgbV9uZXdseUFsbG9jYXRlZC5nZXQoaSkp
KSkgewogICAgICAgICAgICAgaXNFbXB0eSA9IGZhbHNlOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KQEAgLTE0OCw3ICsxNDksNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzcGVjaWFsaXplCiAgICAgLy8gV2Ugb25seSB3YW50IHRvIGRpc2NhcmQgdGhlIG5ld2x5
QWxsb2NhdGVkIGJpdHMgaWYgd2UncmUgY3JlYXRpbmcgYSBGcmVlTGlzdCwKICAgICAvLyBvdGhl
cndpc2Ugd2Ugd291bGQgbG9zZSBpbmZvcm1hdGlvbiBvbiB3aGF0J3MgY3VycmVudGx5IGFsaXZl
LgogICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVMaXN0ICYmIG5ld2x5QWxsb2NhdGVk
TW9kZSA9PSBIYXNOZXdseUFsbG9jYXRlZCkKLSAgICAgICAgbV9uZXdseUFsbG9jYXRlZCA9IG51
bGxwdHI7CisgICAgICAgIG1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51
bGxWZXJzaW9uOwogCiAgICAgRnJlZUxpc3QgcmVzdWx0ID0gRnJlZUxpc3Q6Omxpc3QoaGVhZCwg
Y291bnQgKiBjZWxsU2l6ZSgpKTsKICAgICBpZiAoc3dlZXBNb2RlID09IFN3ZWVwVG9GcmVlTGlz
dCkKQEAgLTIwNyw3ICsyMDgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2Vl
cEhlbHBlCiB0ZW1wbGF0ZTxNYXJrZWRCbG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2Rl
LCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpT
Y3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlPgogRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6
c3dlZXBIZWxwZXJTZWxlY3RIYXNOZXdseUFsbG9jYXRlZChTd2VlcE1vZGUgc3dlZXBNb2RlKQog
ewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKQorICAgIGlmIChoYXNBbnlOZXdseUFsbG9jYXRl
ZCgpKQogICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RTd2VlcE1vZGU8ZW1wdHlNb2Rl
LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgSGFzTmV3bHlBbGxvY2F0ZWQ+KHN3ZWVw
TW9kZSk7CiAgICAgcmV0dXJuIHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlPGVtcHR5TW9kZSwg
ZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIERvZXNOb3RIYXZlTmV3bHlBbGxvY2F0ZWQ+
KHN3ZWVwTW9kZSk7CiB9CkBAIC0yNzUsOCArMjc2LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjpzdG9wQWxsb2NhdGluZwogICAgIC8vIGFsbG9jYXRlZCBmcm9tIG91ciBmcmVlIGxpc3Qg
YXJlIG5vdCBjdXJyZW50bHkgbWFya2VkLCBzbyB3ZSBuZWVkIGFub3RoZXIKICAgICAvLyB3YXkg
dG8gdGVsbCB3aGF0J3MgbGl2ZSB2cyBkZWFkLiAKICAgICAKLSAgICBBU1NFUlQoIW1fbmV3bHlB
bGxvY2F0ZWQpOwotICAgIG1fbmV3bHlBbGxvY2F0ZWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdURjo6
Qml0bWFwPGF0b21zUGVyQmxvY2s+PigpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXJBbGwo
KTsKKyAgICBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAoKS0+b2JqZWN0U3BhY2UoKS5u
ZXdseUFsbG9jYXRlZFZlcnNpb24oKTsKIAogICAgIFNldE5ld2x5QWxsb2NhdGVkRnVuY3RvciBm
dW5jdG9yKHRoaXMpOwogICAgIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwpAQCAtMjk1LDEwICsyOTYs
MTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzdG9wQWxsb2NhdGluZwogdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiB7CiAgICAgYWxsb2NhdG9y
KCktPnNldElzQWxsb2NhdGVkKHRoaXMsIGZhbHNlKTsKLSAgICBtX2Jsb2NrLT5jbGVhck1hcmtz
KCk7CisgICAgbV9ibG9jay0+bV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fYmxvY2stPmNsZWFy
SGFzQW55TWFya2VkKCk7CisgICAgbV9ibG9jay0+bV9tYXJraW5nVmVyc2lvbiA9IGhlYXAoKS0+
b2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpOwogICAgIG1fd2Vha1NldC5sYXN0Q2hhbmNl
VG9GaW5hbGl6ZSgpOwotCi0gICAgY2xlYXJOZXdseUFsbG9jYXRlZCgpOworICAgIG1fbmV3bHlB
bGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiA9IGhlYXAo
KS0+b2JqZWN0U3BhY2UoKS5uZXdseUFsbG9jYXRlZFZlcnNpb24oKTsKICAgICBzd2VlcCgpOwog
fQogCkBAIC0zMDcsNyArMzEwLDcgQEAgRnJlZUxpc3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVz
dW1lQWxsbwogICAgIEFTU0VSVCghYWxsb2NhdG9yKCktPmlzQWxsb2NhdGVkKHRoaXMpKTsKICAg
ICBBU1NFUlQoIWlzRnJlZUxpc3RlZCgpKTsKIAotICAgIGlmICghbV9uZXdseUFsbG9jYXRlZCkg
eworICAgIGlmICghaGFzQW55TmV3bHlBbGxvY2F0ZWQoKSkgewogICAgICAgICAvLyBUaGlzIG1l
YW5zIHdlIGhhZCBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgYmxvY2sgd2hlbiB3ZSBzdG9wcGVkIGFs
bG9jYXRpb24uCiAgICAgICAgIHJldHVybiBGcmVlTGlzdCgpOwogICAgIH0KQEAgLTM0NiwyNCAr
MzQ5LDU2IEBAIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmUKIHsKICAg
ICBBU1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJz
aW9uKSkgewotICAgICAgICBjbGVhck1hcmtzKG1hcmtpbmdWZXJzaW9uKTsKLSAgICAgICAgLy8g
VGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmplY3QgaW4gdGhp
cyBibG9jay4KLSAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1NldEFuZENoZWNr
SXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKKyAgICBpZiAoIWFyZU1hcmtzU3Rh
bGUobWFya2luZ1ZlcnNpb24pKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGhhbmRs
ZSgpLmFsbG9jYXRvcigpLT5pc0FsbG9jYXRlZCgmaGFuZGxlKCkpCisgICAgICAgIHx8ICFtYXJr
c0NvbnZleUxpdmVuZXNzRHVyaW5nTWFya2luZyhtYXJraW5nVmVyc2lvbikpIHsKKyAgICAgICAg
Ly8gV2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlIGJsb2NrIGlzIGZ1bGwgYW5kIGlzIGFscmVhZHkg
cmVjb2duaXplZCBhcyBzdWNoLCBvciB0aGF0IHRoZQorICAgICAgICAvLyBibG9jayBkaWQgbm90
IHN1cnZpdmUgdGhlIHByZXZpb3VzIEdDLiBTbywgd2UgY2FuIGNsZWFyIG1hcmsgYml0cyB0aGUg
b2xkIGZhc2hpb25lZAorICAgICAgICAvLyB3YXkuIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZv
ciBzdWNoIGEgYmxvY2sgdG8gaGF2ZSBuZXdseUFsbG9jYXRlZCB3aXRoIGFuIHVwLXRvLQorICAg
ICAgICAvLyBkYXRlIHZlcnNpb24hIElmIGl0IGRvZXMsIHRoZW4gd2Ugd2FudCB0byBsZWF2ZSB0
aGUgbmV3bHlBbGxvY2F0ZWQgYWxvbmUsIHNpbmNlIHRoYXQKKyAgICAgICAgLy8gbWVhbnMgdGhh
dCB3ZSBoYWQgYWxsb2NhdGVkIGluIHRoaXMgcHJldmlvdXNseSBlbXB0eSBibG9jayBidXQgZGlk
IG5vdCBmaWxsIGl0IHVwLCBzbworICAgICAgICAvLyB3ZSBjcmVhdGVkIGEgbmV3bHlBbGxvY2F0
ZWQuCisgICAgICAgIG1fbWFya3MuY2xlYXJBbGwoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBI
ZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24gPSBzcGFjZSgpLT5uZXdseUFsbG9jYXRl
ZFZlcnNpb24oKTsKKyAgICAgICAgaWYgKGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0ZWRWZXJzaW9u
ID09IG5ld2x5QWxsb2NhdGVkVmVyc2lvbikgeworICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGNv
bnRlbnRzIG9mIG1hcmtlZCBpbnRvIG5ld2x5QWxsb2NhdGVkLiBJZiB3ZSBnZXQgdGhlIGZ1bGwg
c2V0IG9mIGJpdHMKKyAgICAgICAgICAgIC8vIHRoZW4gaW52YWxpZGF0ZSBuZXdseUFsbG9jYXRl
ZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgIGhhbmRsZSgpLm1fbmV3bHlBbGxvY2F0
ZWQubWVyZ2VBbmRDbGVhcihtX21hcmtzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IC8vIFJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIG5ld2x5QWxsb2NhdGVkIHdpdGggbWFya2VkLiBJ
ZiB3ZSBnZXQgdGhlIGZ1bGwgc2V0IG9mCisgICAgICAgICAgICAvLyBiaXRzIHRoZW4gaW52YWxp
ZGF0ZSBuZXdseUFsbG9jYXRlZCBhbmQgc2V0IGFsbG9jYXRlZC4KKyAgICAgICAgICAgIGhhbmRs
ZSgpLm1fbmV3bHlBbGxvY2F0ZWQuc2V0QW5kQ2xlYXIobV9tYXJrcyk7CisgICAgICAgIH0KKyAg
ICAgICAgaGFuZGxlKCkubV9uZXdseUFsbG9jYXRlZFZlcnNpb24gPSBuZXdseUFsbG9jYXRlZFZl
cnNpb247CiAgICAgfQorICAgIGNsZWFySGFzQW55TWFya2VkKCk7CisgICAgV1RGOjpzdG9yZVN0
b3JlRmVuY2UoKTsKKyAgICBtX21hcmtpbmdWZXJzaW9uID0gbWFya2luZ1ZlcnNpb247CisgICAg
CisgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmpl
Y3QgaW4gdGhpcyBibG9jay4KKyAgICBoYW5kbGUoKS5hbGxvY2F0b3IoKS0+YXRvbWljU2V0QW5k
Q2hlY2tJc01hcmtpbmdOb3RFbXB0eSgmaGFuZGxlKCksIHRydWUpOwogfQogCi12b2lkIE1hcmtl
ZEJsb2NrOjpjbGVhck1hcmtzKCkKK3ZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVzZXRBbGxv
Y2F0ZWQoKQogewotICAgIGNsZWFyTWFya3Modm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtp
bmdWZXJzaW9uKCkpOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX25l
d2x5QWxsb2NhdGVkVmVyc2lvbiA9IE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAotdm9p
ZCBNYXJrZWRCbG9jazo6Y2xlYXJNYXJrcyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKK3Zv
aWQgTWFya2VkQmxvY2s6OnJlc2V0TWFya3MoKQogewotICAgIG1fbWFya3MuY2xlYXJBbGwoKTsK
LSAgICBjbGVhckhhc0FueU1hcmtlZCgpOwotICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7Ci0g
ICAgbV9tYXJraW5nVmVyc2lvbiA9IG1hcmtpbmdWZXJzaW9uOworICAgIC8vIFdlIHdhbnQgYWJv
dXRUb01hcmtTbG93KCkgdG8gc2VlIHdoYXQgdGhlIG1hcmsgYml0cyB3ZXJlIGFmdGVyIHRoZSBs
YXN0IGNvbGxlY3Rpb24uIEl0IHVzZXMKKyAgICAvLyB0aGUgdmVyc2lvbiBudW1iZXIgdG8gZGlz
dGluZ3Vpc2ggYmV0d2VlbiB0aGUgbWFya3MgaGF2aW5nIGFscmVhZHkgYmVlbiBzdGFsZSBiZWZv
cmUKKyAgICAvLyBiZWdpbk1hcmtpbmcoKSwgb3IganVzdCBzdGFsZSBub3cgdGhhdCBiZWdpbk1h
cmtpbmcoKSBidW1wZWQgdGhlIHZlcnNpb24uIElmIHdlIGhhdmUgYSB2ZXJzaW9uCisgICAgLy8g
d3JhcGFyb3VuZCwgdGhlbiB3ZSB3aWxsIGNhbGwgdGhpcyBtZXRob2QgYmVmb3JlIHJlc2V0dGlu
ZyB0aGUgdmVyc2lvbiB0byBudWxsLiBXaGVuIHRoZQorICAgIC8vIHZlcnNpb24gaXMgbnVsbCwg
YWJvdXRUb01hcmtTbG93KCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgbWFya3Mgd2VyZSBub3Qgc3Rh
bGUgYXMgb2YgYmVmb3JlCisgICAgLy8gYmVnaW5NYXJraW5nKCkuIEhlbmNlIHRoZSBuZWVkIHRv
IHdoaXAgdGhlIG1hcmtzIGludG8gc2hhcGUuCisgICAgaWYgKGFyZU1hcmtzU3RhbGUoKSkKKyAg
ICAgICAgbV9tYXJrcy5jbGVhckFsbCgpOworICAgIG1fbWFya2luZ1ZlcnNpb24gPSBNYXJrZWRT
cGFjZTo6bnVsbFZlcnNpb247CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC00MjUsNiAr
NDYwLDExIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6cmVtb3ZlRnJvbUFsbG8KICAgICBt
X2FsbG9jYXRvci0+cmVtb3ZlQmxvY2sodGhpcyk7CiB9CiAKK3ZvaWQgTWFya2VkQmxvY2s6OnVw
ZGF0ZU5lZWRzRGVzdHJ1Y3Rpb24oKQoreworICAgIG1fbmVlZHNEZXN0cnVjdGlvbiA9IGhhbmRs
ZSgpLm5lZWRzRGVzdHJ1Y3Rpb24oKTsKK30KKwogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpk
aWRBZGRUb0FsbG9jYXRvcihNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IGluZGV4
KQogewogICAgIEFTU0VSVChtX2luZGV4ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOwpAQCAtNDQyLDEwICs0ODIsOSBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRp
ZEFkZFRvQWxsb2NhCiAgICAgaWYgKG1fYXR0cmlidXRlcy5jZWxsS2luZCAhPSBIZWFwQ2VsbDo6
SlNDZWxsKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24g
PT0gRG9lc05vdE5lZWREZXN0cnVjdGlvbik7CiAgICAgCi0gICAgYmxvY2soKS5tX25lZWRzRGVz
dHJ1Y3Rpb24gPSBuZWVkc0Rlc3RydWN0aW9uKCk7CisgICAgYmxvY2soKS51cGRhdGVOZWVkc0Rl
c3RydWN0aW9uKCk7CiAgICAgCi0gICAgdW5zaWduZWQgY2VsbHNQZXJCbG9jayA9IE1hcmtlZFNw
YWNlOjpibG9ja1BheWxvYWQgLyBjZWxsU2l6ZTsKLSAgICBkb3VibGUgbWFya0NvdW50QmlhcyA9
IC0oT3B0aW9uczo6bWluTWFya2VkQmxvY2tVdGlsaXphdGlvbigpICogY2VsbHNQZXJCbG9jayk7
CisgICAgZG91YmxlIG1hcmtDb3VudEJpYXMgPSAtKE9wdGlvbnM6Om1pbk1hcmtlZEJsb2NrVXRp
bGl6YXRpb24oKSAqIGNlbGxzUGVyQmxvY2soKSk7CiAgICAgCiAgICAgLy8gVGhlIG1hcmsgY291
bnQgYmlhcyBzaG91bGQgYmUgY29tZm9ydGFibHkgd2l0aGluIHRoaXMgcmFuZ2UuCiAgICAgUkVM
RUFTRV9BU1NFUlQobWFya0NvdW50QmlhcyA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1l
cmljX2xpbWl0czxpbnQxNl90Pjo6bWluKCkpKTsKQEAgLTQ2NiwxMiArNTA1LDEyIEBAIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkUmVtb3ZlRnJvbUEKIAogYm9vbCBNYXJrZWRCbG9jazo6
SGFuZGxlOjppc0xpdmUoY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7Ci0gICAgcmV0dXJuIGlzTGl2
ZSh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSwgY2VsbCk7CisgICAg
cmV0dXJuIGlzTGl2ZShzcGFjZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtp
bmcoKSwgY2VsbCk7CiB9CiAKIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbChj
b25zdCB2b2lkKiBwKQogewotICAgIHJldHVybiBpc0xpdmVDZWxsKHZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpLCBwKTsKKyAgICByZXR1cm4gaXNMaXZlQ2VsbChzcGFj
ZSgpLT5tYXJraW5nVmVyc2lvbigpLCBzcGFjZSgpLT5pc01hcmtpbmcoKSwgcCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5oCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsK
K2NsYXNzIE1hcmtlZFNwYWNlOwogCiB0eXBlZGVmIHVpbnRwdHJfdCBCaXRzOwogdHlwZWRlZiB1
aW50MzJfdCBIZWFwVmVyc2lvbjsKQEAgLTExMCw2ICsxMTEsNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSBjb25zdDsKICAgICAgICAgSGVhcCogaGVh
cCgpIGNvbnN0OworICAgICAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAg
ICAgICAgIFZNKiB2bSgpIGNvbnN0OwogICAgICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CiAgICAg
ICAgICAgICAKQEAgLTE0MSwxMSArMTQzLDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIHN0b3BB
bGxvY2F0aW5nKGNvbnN0IEZyZWVMaXN0Jik7CiAgICAgICAgIEZyZWVMaXN0IHJlc3VtZUFsbG9j
YXRpbmcoKTsgLy8gQ2FsbCB0aGlzIGlmIHlvdSBjYW5vbmljYWxpemVkIGEgYmxvY2sgZm9yIHNv
bWUgbm9uLWNvbGxlY3Rpb24gcmVsYXRlZCBwdXJwb3NlLgogICAgICAgICAgICAgCi0gICAgICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgIm5ld2x5IGFsbG9jYXRlZCIgYml0bWFwIHdhcyBub24t
bnVsbCAKLSAgICAgICAgLy8gYW5kIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZCBhbmQgZmFsc2Ug
b3RoZXJ3aXNlLgotICAgICAgICBib29sIGNsZWFyTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICAgICAg
ICAgIAogICAgICAgICBzaXplX3QgY2VsbFNpemUoKTsKKyAgICAgICAgaW5saW5lIHVuc2lnbmVk
IGNlbGxzUGVyQmxvY2soKTsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IEFsbG9jYXRvckF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMoKSBjb25zdDsKICAgICAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3Ry
dWN0aW9uKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigpIGNvbnN0OwpA
QCAtMTUzLDkgKzE1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICBzaXplX3Qg
bWFya0NvdW50KCk7CiAgICAgICAgIHNpemVfdCBzaXplKCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgaW5saW5lIGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBI
ZWFwQ2VsbCopOwotICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKik7CisgICAgICAgIAorICAgICAgICBpbmxpbmUgYm9v
bCBpc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGJvb2wgaXNNYXJraW5nLCBjb25z
dCBIZWFwQ2VsbCopOworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFya2luZywgY29uc3Qgdm9pZCopOwogCiAgICAgICAg
IGJvb2wgaXNMaXZlKGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChj
b25zdCB2b2lkKik7CkBAIC0xNjQsOCArMTY0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBz
ZXROZXdseUFsbG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIHZvaWQgY2xlYXJOZXdseUFs
bG9jYXRlZChjb25zdCB2b2lkKik7CiAgICAgICAgIAotICAgICAgICBib29sIGhhc0FueU5ld2x5
QWxsb2NhdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX25ld2x5QWxsb2NhdGVkOyB9Ci0gICAgICAg
ICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gbmV3bHlBbGxvY2F0ZWRWZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXdseUFsbG9jYXRlZFZlcnNpb247IH0KKyAgICAgICAgCisgICAgICAgIGlu
bGluZSBib29sIGlzTmV3bHlBbGxvY2F0ZWRTdGFsZSgpIGNvbnN0OworICAgICAgICAKKyAgICAg
ICAgaW5saW5lIGJvb2wgaGFzQW55TmV3bHlBbGxvY2F0ZWQoKTsKKyAgICAgICAgdm9pZCByZXNl
dEFsbG9jYXRlZCgpOworICAgICAgICAKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0
b3I+IEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVh
Y2hMaXZlQ2VsbChjb25zdCBGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIGZvckVhY2hEZWFkQ2VsbChjb25zdCBGdW5j
dG9yJik7CkBAIC0xODUsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICBIYW5kbGUoSGVhcCYsIHZvaWQqKTsKLSAgICAgICAgICAgIAorICAgICAgICAK
ICAgICAgICAgdGVtcGxhdGU8RGVzdHJ1Y3Rpb25Nb2RlPgogICAgICAgICBGcmVlTGlzdCBzd2Vl
cEhlbHBlclNlbGVjdFNjcmliYmxlTW9kZShTd2VlcE1vZGUgPSBTd2VlcE9ubHkpOwogICAgICAg
ICAgICAgCkBAIC0yMjMsNyArMjI4LDcgQEAgcHVibGljOgogICAgICAgICBzaXplX3QgbV9hdG9t
c1BlckNlbGwgeyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAg
IHNpemVfdCBtX2VuZEF0b20geyBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07
IC8vIFRoaXMgaXMgYSBmdXp6eSBlbmQuIEFsd2F5cyB0ZXN0IGZvciA8IG1fZW5kQXRvbS4KICAg
ICAgICAgICAgIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V1RGOjpCaXRtYXA8YXRvbXNQZXJC
bG9jaz4+IG1fbmV3bHlBbGxvY2F0ZWQ7CisgICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxv
Y2s+IG1fbmV3bHlBbGxvY2F0ZWQ7CiAgICAgICAgICAgICAKICAgICAgICAgQWxsb2NhdG9yQXR0
cmlidXRlcyBtX2F0dHJpYnV0ZXM7CiAgICAgICAgIGJvb2wgbV9pc0ZyZWVMaXN0ZWQgeyBmYWxz
ZSB9OwpAQCAtMjMxLDYgKzIzNiw4IEBAIHB1YmxpYzoKICAgICAgICAgTWFya2VkQWxsb2NhdG9y
KiBtX2FsbG9jYXRvciB7IG51bGxwdHIgfTsKICAgICAgICAgc2l6ZV90IG1faW5kZXggeyBzdGQ6
Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIH07CiAgICAgICAgIFdlYWtTZXQgbV93ZWFr
U2V0OworICAgICAgICAKKyAgICAgICAgSGVhcFZlcnNpb24gbV9uZXdseUFsbG9jYXRlZFZlcnNp
b247CiAgICAgICAgICAgICAKICAgICAgICAgTWFya2VkQmxvY2sqIG1fYmxvY2sgeyBudWxscHRy
IH07CiAgICAgfTsKQEAgLTI0MCw2ICsyNDcsOCBAQCBwdWJsaWM6CiAgICAgSGFuZGxlJiBoYW5k
bGUoKTsKICAgICAgICAgCiAgICAgVk0qIHZtKCkgY29uc3Q7CisgICAgaW5saW5lIEhlYXAqIGhl
YXAoKSBjb25zdDsKKyAgICBpbmxpbmUgTWFya2VkU3BhY2UqIHNwYWNlKCkgY29uc3Q7CiAKICAg
ICBzdGF0aWMgYm9vbCBpc0F0b21BbGlnbmVkKGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgTWFy
a2VkQmxvY2sqIGJsb2NrRm9yKGNvbnN0IHZvaWQqKTsKQEAgLTI3OCw3ICsyODcsMTAgQEAgcHVi
bGljOgogICAgICAgICAKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX25lZWRzRGVzdHJ1Y3Rpb247IH0KICAgICAKLSAgICBpbmxpbmUgdm9pZCByZXNldE1hcmtp
bmdWZXJzaW9uKCk7CisgICAgLy8gVGhpcyBpcyB1c3VhbGx5IGEgbm8tb3AsIGFuZCB3ZSB1c2Ug
aXQgYXMgYSBuby1vcCB0aGF0IHRvdWNoZXMgdGhlIHBhZ2UgaW4gaXNQYWdlZE91dCgpLgorICAg
IHZvaWQgdXBkYXRlTmVlZHNEZXN0cnVjdGlvbigpOworICAgIAorICAgIHZvaWQgcmVzZXRNYXJr
cygpOwogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1l
bnRNYXNrID0gYXRvbVNpemUgLSAxOwpAQCAtMjg5LDEzICszMDEsMTMgQEAgcHJpdmF0ZToKICAg
ICBBdG9tKiBhdG9tcygpOwogICAgICAgICAKICAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFw
VmVyc2lvbiBtYXJraW5nVmVyc2lvbik7Ci0gICAgdm9pZCBjbGVhck1hcmtzKCk7Ci0gICAgdm9p
ZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2b2lkIGNsZWFy
SGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygpOworICAgIAor
ICAgIGlubGluZSBib29sIG1hcmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJz
aW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICAgICAgCi0gICAgV1RGOjpCaXRtYXA8YXRvbXNQZXJC
bG9jaywgV1RGOjpCaXRtYXBBdG9taWMsIHVpbnQ4X3Q+IG1fbWFya3M7CisgICAgV1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaz4gbV9tYXJrczsKIAogICAgIGJvb2wgbV9uZWVkc0Rlc3RydWN0aW9u
OwogICAgIExvY2sgbV9sb2NrOwpAQCAtNTIxLDI2ICs1MzMsMTcgQEAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6OnRlc3RBbmRTZXRNYXJrZQogCiBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgcmV0dXJuIG1fbmV3
bHlBbGxvY2F0ZWQtPmdldChtX2Jsb2NrLT5hdG9tTnVtYmVyKHApKTsKKyAgICByZXR1cm4gbV9u
ZXdseUFsbG9jYXRlZC5nZXQobV9ibG9jay0+YXRvbU51bWJlcihwKSk7CiB9CiAKIGlubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNldE5ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqIHAp
CiB7Ci0gICAgbV9uZXdseUFsbG9jYXRlZC0+c2V0KG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwor
ICAgIG1fbmV3bHlBbGxvY2F0ZWQuc2V0KG1fYmxvY2stPmF0b21OdW1iZXIocCkpOwogfQogCiBp
bmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpjbGVhck5ld2x5QWxsb2NhdGVkKGNvbnN0
IHZvaWQqIHApCiB7Ci0gICAgbV9uZXdseUFsbG9jYXRlZC0+Y2xlYXIobV9ibG9jay0+YXRvbU51
bWJlcihwKSk7Ci19Ci0KLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmNsZWFyTmV3
bHlBbGxvY2F0ZWQoKQotewotICAgIGlmIChtX25ld2x5QWxsb2NhdGVkKSB7Ci0gICAgICAgIG1f
bmV3bHlBbGxvY2F0ZWQgPSBudWxscHRyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIG1fbmV3bHlBbGxvY2F0ZWQuY2xlYXIobV9ibG9jay0+YXRv
bU51bWJlcihwKSk7CiB9CiAKIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc0F0b20oY29uc3Qg
dm9pZCogcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrSW5saW5lcy5oCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDM1
IEBACiAKICNpbmNsdWRlICJNYXJrZWRBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
ay5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1pbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmUoSGVhcFZlcnNpb24gbWFya2luZ1Zl
cnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQoraW5saW5lIHVuc2lnbmVkIE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OmNlbGxzUGVyQmxvY2soKQoreworICAgIHJldHVybiBNYXJrZWRTcGFjZTo6Ymxv
Y2tQYXlsb2FkIC8gY2VsbFNpemUoKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Om1h
cmtzQ29udmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KQoreworICAgIC8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGVzZSBpcyB0cnVlOgor
ICAgIC8vIC0gV2UganVzdCBjcmVhdGVkIHRoZSBibG9jayBhbmQgc28gdGhlIGJpdHMgYXJlIGNs
ZWFyIGFscmVhZHkuCisgICAgLy8gLSBUaGlzIGJsb2NrIGhhcyBvYmplY3RzIG1hcmtlZCBkdXJp
bmcgdGhlIGxhc3QgR0MsIGFuZCBzbyBpdHMgdmVyc2lvbiB3YXMgdXAtdG8tZGF0ZSBqdXN0Cisg
ICAgLy8gICBiZWZvcmUgdGhlIGN1cnJlbnQgY29sbGVjdGlvbiBkaWQgYmVnaW5NYXJraW5nKCku
IFRoaXMgbWVhbnMgdGhhdCBhbnkgb2JqZWN0cyB0aGF0IGhhdmUgCisgICAgLy8gICB0aGVpciBt
YXJrIGJpdCBzZXQgYXJlIHZhbGlkIG9iamVjdHMgdGhhdCB3ZXJlIG5ldmVyIGRlbGV0ZWQsIGFu
ZCBzbyBhcmUgY2FuZGlkYXRlcyBmb3IKKyAgICAvLyAgIG1hcmtpbmcgaW4gYW55IGNvbnNlcnZh
dGl2ZSBzY2FuLiBVc2luZyBvdXIgamFyZ29uLCB0aGV5IGFyZSAibGl2ZSIuCisgICAgLy8gLSBX
ZSBkaWQgfjJeMzIgY29sbGVjdGlvbnMgYW5kIHJvdGF0ZWQgdGhlIHZlcnNpb24gYmFjayB0byBu
dWxsLCBzbyB3ZSBuZWVkZWQgdG8gaGFyZC1yZXNldAorICAgIC8vICAgZXZlcnl0aGluZy4gSWYg
dGhlIG1hcmtzIGhhZCBiZWVuIHN0YWxlLCB3ZSB3b3VsZCBoYXZlIGNsZWFyZWQgdGhlbS4gU28s
IHdlIGNhbiBiZSBzdXJlIHRoYXQKKyAgICAvLyAgIGFueSBzZXQgbWFyayBiaXQgcmVmbGVjdHMg
b2JqZWN0cyBtYXJrZWQgZHVyaW5nIGxhc3QgR0MsIGkuZS4gImxpdmUiIG9iamVjdHMuCisgICAg
Ly8gSXQgd291bGQgYmUgYWJzdXJkIHRvIHVzZSB0aGlzIG1ldGhvZCB3aGVuIG5vdCBjb2xsZWN0
aW5nLCBzaW5jZSB0aGlzIHNwZWNpYWwgIm9uZSB2ZXJzaW9uCisgICAgLy8gYmFjayIgc3RhdGUg
b25seSBtYWtlcyBzZW5zZSB3aGVuIHdlJ3JlIGluIGEgY29uY3VycmVudCBjb2xsZWN0aW9uIGFu
ZCBoYXZlIHRvIGJlCisgICAgLy8gY29uc2VydmF0aXZlLgorICAgIEFTU0VSVChzcGFjZSgpLT5p
c01hcmtpbmcoKSk7CisgICAgcmV0dXJuIG1fbWFya2luZ1ZlcnNpb24gPT0gTWFya2VkU3BhY2U6
Om51bGxWZXJzaW9uCisgICAgICAgIHx8IE1hcmtlZFNwYWNlOjpuZXh0VmVyc2lvbihtX21hcmtp
bmdWZXJzaW9uKSA9PSBtYXJraW5nVmVyc2lvbjsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBib29sIGlzTWFy
a2luZywgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQo
KSk7CiAgICAgCkBAIC0zOSwyMiArNjQsMzYgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Okhh
bmRsZTo6aXNMaXZlKAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAg
IE1hcmtlZEJsb2NrJiBibG9jayA9IHRoaXMtPmJsb2NrKCk7Ci0gICAgCiAgICAgaWYgKGFsbG9j
YXRvcigpLT5pc0FsbG9jYXRlZCh0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0g
ICAgaWYgKGJsb2NrLmFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgTWFya2VkQmxvY2smIGJsb2NrID0gdGhpcy0+YmxvY2soKTsKKyAgICAK
KyAgICBpZiAoYmxvY2suYXJlTWFya3NTdGFsZSgpKSB7CisgICAgICAgIGlmICghaXNNYXJraW5n
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWJsb2NrLm1hcmtzQ29u
dmV5TGl2ZW5lc3NEdXJpbmdNYXJraW5nKG1hcmtpbmdWZXJzaW9uKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICByZXR1cm4gYmxvY2suaXNNYXJrZWQoY2VsbCk7Cisg
ICAgcmV0dXJuIGJsb2NrLm1fbWFya3MuZ2V0KGJsb2NrLmF0b21OdW1iZXIoY2VsbCkpOwogfQog
Ci1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc0xpdmVDZWxsKEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OkhhbmRsZTo6aXNMaXZlQ2VsbChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgYm9vbCBpc01h
cmtpbmcsIGNvbnN0IHZvaWQqIHApCiB7CiAgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKG1hcmtpbmdWZXJzaW9uLCBz
dGF0aWNfY2FzdDxjb25zdCBIZWFwQ2VsbCo+KHApKTsKKyAgICByZXR1cm4gaXNMaXZlKG1hcmtp
bmdWZXJzaW9uLCBpc01hcmtpbmcsIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwor
fQorCitpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjppc05ld2x5QWxsb2NhdGVkU3Rh
bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiAhPSBzcGFj
ZSgpLT5uZXdseUFsbG9jYXRlZFZlcnNpb24oKTsKK30KKworaW5saW5lIGJvb2wgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6aGFzQW55TmV3bHlBbGxvY2F0ZWQoKQoreworICAgIHJldHVybiAhaXNOZXds
eUFsbG9jYXRlZFN0YWxlKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPgpAQCAt
ODcsOSArMTI2LDE5IEBAIGlubGluZSBJdGVyYXRpb25TdGF0dXMgTWFya2VkQmxvY2s6OkhhbmQK
ICAgICByZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKIH0KIAotaW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OnJlc2V0TWFya2luZ1ZlcnNpb24oKQoraW5saW5lIEhlYXAqIE1hcmtlZEJs
b2NrOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gJnZtKCktPmhlYXA7Cit9CisKK2lubGlu
ZSBNYXJrZWRTcGFjZSogTWFya2VkQmxvY2s6OnNwYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
JmhlYXAoKS0+b2JqZWN0U3BhY2UoKTsKK30KKworaW5saW5lIE1hcmtlZFNwYWNlKiBNYXJrZWRC
bG9jazo6SGFuZGxlOjpzcGFjZSgpIGNvbnN0CiB7Ci0gICAgbV9tYXJraW5nVmVyc2lvbiA9IE1h
cmtlZFNwYWNlOjpudWxsVmVyc2lvbjsKKyAgICByZXR1cm4gJmhlYXAoKS0+b2JqZWN0U3BhY2Uo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwyOSAr
NDUxLDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKICAgICAgICAgfSk7CiB9CiAKLXZv
aWQgTWFya2VkU3BhY2U6OmNsZWFyTmV3bHlBbGxvY2F0ZWQoKQotewotICAgIGZvckVhY2hBbGxv
Y2F0b3IoCi0gICAgICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBpZiAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sg
PSBhbGxvY2F0b3IudGFrZUxhc3RBY3RpdmVCbG9jaygpKQotICAgICAgICAgICAgICAgIGJsb2Nr
LT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gSXRlcmF0aW9uU3Rh
dHVzOjpDb250aW51ZTsKLSAgICAgICAgfSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
bV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdlQWxs
b2NhdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+Y2xl
YXJOZXdseUFsbG9jYXRlZCgpOwotCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAg
ICAgZm9yRWFjaEJsb2NrKAotICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykgewotICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYmxvY2ssICFibG9jay0+Y2xl
YXJOZXdseUFsbG9jYXRlZCgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlvbnMpCi0g
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5pc05ld2x5
QWxsb2NhdGVkKCkpOwotICAgIH0KLX0KLQogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5n
KCkKIHsKICAgICBpZiAobV9oZWFwLT5vcGVyYXRpb25JblByb2dyZXNzKCkgPT0gRnVsbENvbGxl
Y3Rpb24pIHsKQEAgLTQ4MywxNiArNDYwLDE1IEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFy
a2luZygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7
CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0gbmV4dFZlcnNp
b24obV9tYXJraW5nVmVyc2lvbik7Ci0gICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFkobV9t
YXJraW5nVmVyc2lvbiA9PSBpbml0aWFsVmVyc2lvbikpIHsKLSAgICAgICAgICAgIC8vIE9oIG5v
ISBWZXJzaW9uIHdyYXAtYXJvdW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9j
ayB2ZXJzaW9ucyB0byBudWxsLgorICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9t
YXJraW5nVmVyc2lvbikgPT0gaW5pdGlhbFZlcnNpb24pKSB7CiAgICAgICAgICAgICBmb3JFYWNo
QmxvY2soCiAgICAgICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya2luZ1ZlcnNp
b24oKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygpLnJlc2V0TWFya3MoKTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgbV9tYXJr
aW5nVmVyc2lvbiA9IG5leHRWZXJzaW9uKG1fbWFya2luZ1ZlcnNpb24pOworICAgICAgICAKICAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQpAQCAtNTExLDYgKzQ4
NywyMyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogCiB2b2lkIE1hcmtlZFNw
YWNlOjplbmRNYXJraW5nKCkKIHsKKyAgICBpZiAoVU5MSUtFTFkobmV4dFZlcnNpb24obV9uZXds
eUFsbG9jYXRlZFZlcnNpb24pID09IGluaXRpYWxWZXJzaW9uKSkgeworICAgICAgICBmb3JFYWNo
QmxvY2soCisgICAgICAgICAgICBbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSkgewor
ICAgICAgICAgICAgICAgIGhhbmRsZS0+cmVzZXRBbGxvY2F0ZWQoKTsKKyAgICAgICAgICAgIH0p
OworICAgIH0KKyAgICAgICAgCisgICAgbV9uZXdseUFsbG9jYXRlZFZlcnNpb24gPSBuZXh0VmVy
c2lvbihtX25ld2x5QWxsb2NhdGVkVmVyc2lvbik7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9sYXJnZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX2xhcmdl
QWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fbGFyZ2VBbGxvY2F0aW9uc1tpXS0+
Y2xlYXJOZXdseUFsbG9jYXRlZCgpOworCisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICAgICAgZm9yIChMYXJnZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX2xhcmdlQWxsb2NhdGlv
bnMpCisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFsbG9jYXRpb24sICFhbGxvY2F0aW9uLT5p
c05ld2x5QWxsb2NhdGVkKCkpOworICAgIH0KKwogICAgIGZvckVhY2hBbGxvY2F0b3IoCiAgICAg
ICAgIFsmXSAoTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3IpIC0+IEl0ZXJhdGlvblN0YXR1cyB7
CiAgICAgICAgICAgICBhbGxvY2F0b3IuZW5kTWFya2luZygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwx
MyArNjUsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbnVtU2l6ZUNsYXNz
ZXMgPSBsYXJnZUN1dG9mZiAvIHNpemVTdGVwOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBIZWFw
VmVyc2lvbiBudWxsVmVyc2lvbiA9IDA7IC8vIFRoZSB2ZXJzaW9uIG9mIGZyZXNobHkgYWxsb2Nh
dGVkIGJsb2Nrcy4KLSAgICBzdGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24g
PSAxOyAvLyBUaGUgdmVyc2lvbiB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4KKyAgICBz
dGF0aWMgY29uc3QgSGVhcFZlcnNpb24gaW5pdGlhbFZlcnNpb24gPSAyOyAvLyBUaGUgdmVyc2lv
biB0aGF0IHRoZSBoZWFwIHN0YXJ0cyBvdXQgd2l0aC4gU2V0IHRvIG1ha2Ugc3VyZSB0aGF0IG5l
eHRWZXJzaW9uKG51bGxWZXJzaW9uKSAhPSBpbml0aWFsVmVyc2lvbi4KICAgICAKLSAgICBIZWFw
VmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQorICAgIHN0YXRpYyBIZWFw
VmVyc2lvbiBuZXh0VmVyc2lvbihIZWFwVmVyc2lvbiB2ZXJzaW9uKQogICAgIHsKICAgICAgICAg
dmVyc2lvbisrOwogICAgICAgICBpZiAodmVyc2lvbiA9PSBudWxsVmVyc2lvbikKLSAgICAgICAg
ICAgIHZlcnNpb24rKzsKKyAgICAgICAgICAgIHZlcnNpb24gPSBpbml0aWFsVmVyc2lvbjsKICAg
ICAgICAgcmV0dXJuIHZlcnNpb247CiAgICAgfQogICAgIApAQCAtMTcxLDYgKzE3MSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKICAgICBI
ZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFya2luZ1ZlcnNp
b247IH0KKyAgICBIZWFwVmVyc2lvbiBuZXdseUFsbG9jYXRlZFZlcnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbjsgfQogCiAgICAgY29uc3QgVmVjdG9yPExhcmdl
QWxsb2NhdGlvbio+JiBsYXJnZUFsbG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9sYXJnZUFs
bG9jYXRpb25zOyB9CiAgICAgdW5zaWduZWQgbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2xhcmdlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OyB9CkBAIC0y
MTcsNiArMjE4LDcgQEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1faGVhcDsKICAgICBIZWFwVmVy
c2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKKyAgICBIZWFwVmVyc2lv
biBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgc2l6ZV90
IG1fY2FwYWNpdHk7CiAgICAgYm9vbCBtX2lzSXRlcmF0aW5nOwogICAgIGJvb2wgbV9pc01hcmtp
bmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsOCArMTkxLDYgQEAgdm9pZCBT
bG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQogICAgIHZhbGlkYXRlKGNlbGwpOwog
I2VuZGlmCiAgICAgCi0gICAgLy9kYXRhTG9nKCIgICAgTWFya2luZyAiLCBSYXdQb2ludGVyKGNl
bGwpLCAiXG4iKTsKLSAgICAKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAg
ICAgICAgc2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soY2VsbC0+bGFyZ2VBbGxvY2F0aW9u
KCksIGNlbGwpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCShyZXZpc2lvbiAyMDcxNjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MTY2KQorKysgU291cmNlL1dURi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxNi0xMC0wOCAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIE1hcmtlZEJsb2NrIHNob3VsZCBr
bm93IHdoYXQgb2JqZWN0cyBhcmUgbGl2ZSBkdXJpbmcgbWFya2luZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMzA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisgICAgICAgIAorICAgICAgICBUaGlzIHJlbW92ZXMgdGhl
IGF0b21pY2l0eSBtb2RlLCBiZWNhdXNlIGl0J3Mgbm90IHJlYWxseSB1c2VkOiBpdCBvbmx5IGFm
ZmVjdHMgdGhlCisgICAgICAgIGNvbmN1cnJlbnRCbGFoIG1ldGhvZHMsIGJ1dCB0aGVpciBvbmx5
IHVzZXJzIHR1cm4gb24gYXRvbWljaXR5LiBUaGlzIHdhcyB1c2VmdWwgYmVjYXVzZQorICAgICAg
ICBwcmV2aW91c2x5LCBzb21lIGJpbmFyeSBCaXRtYXAgbWV0aG9kcyAobGlrZSBtZXJnZShjb25z
dCBCaXRtYXAmKSkgY291bGRuJ3QgYmUgdXNlZAorICAgICAgICBlZmZlY3RpdmVseSBpbiB0aGUg
R0MgYmVjYXVzZSBzb21lIG9mIHRoZSBHQydzIGJpdG1hcHMgc2V0IHRoZSBhdG9taWMgbW9kZSBh
bmQgc29tZSBkaWRuJ3QuCisgICAgICAgIFJlbW92aW5nIHRoaXMgdXNlbGVzcyBtb2RlIGlzIHRo
ZSBiZXN0IHNvbHV0aW9uLgorICAgICAgICAKKyAgICAgICAgQWxzbyBhZGRlZCBzb21lIG5ldyBi
aW5hcnkgQml0bWFwIG1ldGhvZHM6IG1lcmdlQW5kQ2xlYXIoQml0bWFwJiBvdGhlcikgYW5kCisg
ICAgICAgIHNldEFuZENsZWFyKEJpdG1hcCYgb3RoZXIpLiBUaGV5IHBlcmZvcm0gdGhlaXIgYWN0
aW9uIG9uICd0aGlzJyAoZWl0aGVyIG1lcmdlIG9yIHNldCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5
KSB3aGlsZSBhbHNvIGNsZWFyaW5nIHRoZSBjb250ZW50cyBvZiAnb3RoZXInLiBUaGlzIGlzIGdy
ZWF0IGZvciBvbmUgb2YgdGhlIEdDCisgICAgICAgIGhvdCBwYXRocy4KKworICAgICAgICAqIHd0
Zi9CaXRtYXAuaDoKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpCaXRtYXApOgorICAgICAgICAo
V1RGOjpXb3JkVHlwZT46OmdldCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0KToKKyAg
ICAgICAgKFdURjo6V29yZFR5cGU+Ojp0ZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5
cGU+Ojp0ZXN0QW5kQ2xlYXIpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmNvbmN1cnJlbnRU
ZXN0QW5kU2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZENs
ZWFyKToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpjbGVhcik6CisgICAgICAgIChXVEY6Oldv
cmRUeXBlPjo6Y2xlYXJBbGwpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Om5leHRQb3NzaWJs
eVVuc2V0KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyk6CisgICAg
ICAgIChXVEY6OldvcmRUeXBlPjo6Y291bnQpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46Omlz
RW1wdHkpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmlzRnVsbCk6CisgICAgICAgIChXVEY6
OldvcmRUeXBlPjo6bWVyZ2UpOgorICAgICAgICAoV1RGOjpXb3JkVHlwZT46OmZpbHRlcik6Cisg
ICAgICAgIChXVEY6OldvcmRUeXBlPjo6ZXhjbHVkZSk6CisgICAgICAgIChXVEY6OldvcmRUeXBl
Pjo6Zm9yRWFjaFNldEJpdCk6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6bWVyZ2VBbmRDbGVh
cik6CisgICAgICAgIChXVEY6OldvcmRUeXBlPjo6c2V0QW5kQ2xlYXIpOgorICAgICAgICAoV1RG
Ojo9KToKKyAgICAgICAgKFdURjo6V29yZFR5cGU+OjpoYXNoKToKKwogMjAxNi0xMC0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
eW5jaHJvbml6ZWRGaXhlZFF1ZXVlIGNsYXNzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaAkocmV2aXNpb24gMjA3MTY2
KQorKysgU291cmNlL1dURi93dGYvQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2ICsy
Nyw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi1lbnVtIEJpdG1hcEF0b21pY01vZGUgewotICAg
IC8vIFRoaXMgbWFrZXMgY29uY3VycmVudFRlc3RBbmRTZXQgYmVoYXZlIGp1c3QgbGlrZSB0ZXN0
QW5kU2V0LgotICAgIEJpdG1hcE5vdEF0b21pYywKLQotICAgIC8vIFRoaXMgbWFrZXMgY29uY3Vy
cmVudFRlc3RBbmRTZXQgdXNlIGNvbXBhcmVBbmRTd2FwLCBzbyB0aGF0IGl0J3MKLSAgICAvLyBh
dG9taWMgZXZlbiB3aGVuIHVzZWQgY29uY3VycmVudGx5LgotICAgIEJpdG1hcEF0b21pYwotfTsK
LQotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSA9IEJpdG1hcE5vdEF0b21pYywgdHlwZW5hbWUgV29yZFR5cGUgPSB1aW50MzJfdD4KK3RlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZSA9IHVpbnQzMl90PgogY2xh
c3MgQml0bWFwIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAKQEAgLTU5LDgg
KzUwLDggQEAgcHVibGljOgogICAgIHNpemVfdCBuZXh0UG9zc2libHlVbnNldChzaXplX3QpIGNv
bnN0OwogICAgIHZvaWQgY2xlYXIoc2l6ZV90KTsKICAgICB2b2lkIGNsZWFyQWxsKCk7Ci0gICAg
aW50NjRfdCBmaW5kUnVuT2ZaZXJvcyhzaXplX3QpIGNvbnN0OwotICAgIHNpemVfdCBjb3VudChz
aXplX3QgPSAwKSBjb25zdDsKKyAgICBpbnQ2NF90IGZpbmRSdW5PZlplcm9zKHNpemVfdCBydW5M
ZW5ndGgpIGNvbnN0OworICAgIHNpemVfdCBjb3VudChzaXplX3Qgc3RhcnQgPSAwKSBjb25zdDsK
ICAgICBzaXplX3QgaXNFbXB0eSgpIGNvbnN0OwogICAgIHNpemVfdCBpc0Z1bGwoKSBjb25zdDsK
ICAgICAKQEAgLTcxLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmM+CiAgICAgdm9pZCBmb3JFYWNoU2V0Qml0KGNvbnN0IEZ1bmMmKSBjb25zdDsKICAgICAKKyAg
ICB2b2lkIG1lcmdlQW5kQ2xlYXIoQml0bWFwJik7CisgICAgdm9pZCBzZXRBbmRDbGVhcihCaXRt
YXAmKTsKKyAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7CiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJpdG1hcCYpIGNvbnN0OwogICAgIApAQCAtOTAsMjYg
Kzg0LDI2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphcnJheTxXb3JkVHlwZSwgd29yZHM+IGJpdHM7
CiB9OwogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9t
aWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpCaXRtYXAoKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OkJpdG1hcCgpCiB7CiAgICAgY2xlYXJBbGwoKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1h
cFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1p
bmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpnZXQo
c2l6ZV90IG4pIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29y
ZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpnZXQoc2l6
ZV90IG4pIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhKGJpdHNbbiAvIHdvcmRTaXplXSAmIChvbmUg
PDwgKG4gJSB3b3JkU2l6ZSkpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJp
dG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9p
ZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4p
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXQoc2l6ZV90IG4pCiB7CiAgICAg
Yml0c1tuIC8gd29yZFNpemVdIHw9IChvbmUgPDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1w
bGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBl
bmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2Rl
LCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKK3RlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46OnNldChzaXplX3QgbiwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFs
dWUpCiAgICAgICAgIHNldChuKTsKQEAgLTExNyw4ICsxMTEsOCBAQCBpbmxpbmUgdm9pZCBCaXRt
YXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgICAgIGNsZWFyKG4pOwogfQogCi10ZW1wbGF0
ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFt
ZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBX
b3JkVHlwZT46OnRlc3RBbmRTZXQoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29y
ZFR5cGU+Ojp0ZXN0QW5kU2V0KHNpemVfdCBuKQogewogICAgIFdvcmRUeXBlIG1hc2sgPSBvbmUg
PDwgKG4gJSB3b3JkU2l6ZSk7CiAgICAgc2l6ZV90IGluZGV4ID0gbiAvIHdvcmRTaXplOwpAQCAt
MTI3LDggKzEyMSw4IEBAIGlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0
bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihz
aXplX3QgbikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OnRlc3RBbmRDbGVhcihz
aXplX3QgbikKIHsKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwog
ICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKQEAgLTEzNywxNCArMTMxLDkgQEAgaW5s
aW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21p
Y01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUs
IGF0b21pY01vZGUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRTZXQoc2l6ZV90IG4pCit0
ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgYm9v
bCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+Ojpjb25jdXJyZW50VGVzdEFuZFNldChzaXpl
X3QgbikKIHsKLSAgICBpZiAoYXRvbWljTW9kZSA9PSBCaXRtYXBOb3RBdG9taWMpCi0gICAgICAg
IHJldHVybiB0ZXN0QW5kU2V0KG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFw
QXRvbWljKTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUp
OwogICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0
ciA9IGJpdHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNTcsMTQgKzE0Niw5IEBAIGlubGluZSBib29s
IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5
cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01v
ZGUsIFdvcmRUeXBlPjo6Y29uY3VycmVudFRlc3RBbmRDbGVhcihzaXplX3QgbikKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNvbmN1cnJlbnRUZXN0QW5kQ2xlYXIoc2l6ZV90IG4p
CiB7Ci0gICAgaWYgKGF0b21pY01vZGUgPT0gQml0bWFwTm90QXRvbWljKQotICAgICAgICByZXR1
cm4gdGVzdEFuZENsZWFyKG4pOwotCi0gICAgQVNTRVJUKGF0b21pY01vZGUgPT0gQml0bWFwQXRv
bWljKTsKLSAgICAKICAgICBXb3JkVHlwZSBtYXNrID0gb25lIDw8IChuICUgd29yZFNpemUpOwog
ICAgIHNpemVfdCBpbmRleCA9IG4gLyB3b3JkU2l6ZTsKICAgICBXb3JkVHlwZSogd29yZFB0ciA9
IGJpdHMuZGF0YSgpICsgaW5kZXg7CkBAIC0xNzcsMjggKzE2MSwyOCBAQCBpbmxpbmUgYm9vbCBC
aXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVu
YW1lIFdvcmRUeXBlPgotaW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUs
IFdvcmRUeXBlPjo6Y2xlYXIoc2l6ZV90IG4pCit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpjbGVhcihzaXplX3QgbikKIHsKICAgICBiaXRzW24gLyB3b3JkU2l6ZV0gJj0gfihvbmUg
PDwgKG4gJSB3b3JkU2l6ZSkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0
bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lk
IEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKK3Rl
bXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lk
IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmNsZWFyQWxsKCkKIHsKICAgICBtZW1zZXQo
Yml0cy5kYXRhKCksIDAsIHNpemVvZihiaXRzKSk7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgot
aW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+Ojpu
ZXh0UG9zc2libHlVbnNldChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0
bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBT
aXplLCBXb3JkVHlwZT46Om5leHRQb3NzaWJseVVuc2V0KHNpemVfdCBzdGFydCkgY29uc3QKIHsK
ICAgICBpZiAoIX5iaXRzW3N0YXJ0IC8gd29yZFNpemVdKQogICAgICAgICByZXR1cm4gKChzdGFy
dCAvIHdvcmRTaXplKSArIDEpICogd29yZFNpemU7CiAgICAgcmV0dXJuIHN0YXJ0ICsgMTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgaW50NjRfdCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTW9kZSwgV29yZFR5cGU+OjpmaW5kUnVuT2ZaZXJvcyhzaXplX3QgcnVuTGVuZ3RoKSBj
b25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgoraW5s
aW5lIGludDY0X3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6ZmluZFJ1bk9mWmVyb3Mo
c2l6ZV90IHJ1bkxlbmd0aCkgY29uc3QKIHsKICAgICBpZiAoIXJ1bkxlbmd0aCkgCiAgICAgICAg
IHJ1bkxlbmd0aCA9IDE7IApAQCAtMjE3LDggKzIwMSw4IEBAIGlubGluZSBpbnQ2NF90IEJpdG1h
cDxiaXRtYXBTaXplLCBhdG9taWMKICAgICByZXR1cm4gLTE7CiB9CiAKLXRlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRU
eXBlPgotaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5
cGU+Ojpjb3VudChzaXplX3Qgc3RhcnQpIGNvbnN0Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUgc2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46OmNvdW50KHNpemVfdCBzdGFydCkgY29uc3QKIHsKICAgICBzaXplX3QgcmVzdWx0
ID0gMDsKICAgICBmb3IgKCA7IChzdGFydCAlIHdvcmRTaXplKTsgKytzdGFydCkgewpAQCAtMjMw
LDggKzIxNCw4IEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY00KICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFw
QXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBzaXplX3Qg
Qml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNFbXB0eSgpIGNvbnN0
Cit0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+CitpbmxpbmUg
c2l6ZV90IEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmlzRW1wdHkoKSBjb25zdAogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgaWYgKGJpdHNb
aV0pCkBAIC0yMzksOCArMjIzLDggQEAgaW5saW5lIHNpemVfdCBCaXRtYXA8Yml0bWFwU2l6ZSwg
YXRvbWljTQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6
ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGlu
ZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6aXNGdWxs
KCkgY29uc3QKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4K
K2lubGluZSBzaXplX3QgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6aXNGdWxsKCkgY29u
c3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGlm
ICh+Yml0c1tpXSkKQEAgLTI0OCwzMCArMjMyLDMwIEBAIGlubGluZSBzaXplX3QgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY00KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90
IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9kZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRvbWljTW9kZSwgV29yZFR5cGU+
OjptZXJnZShjb25zdCBCaXRtYXAmIG90aGVyKQordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6bWVyZ2UoY29uc3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdvcmRzOyArK2kpCiAgICAgICAgIGJpdHNbaV0gfD0gb3RoZXIuYml0c1tpXTsKIH0K
IAotdGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIEJpdG1hcEF0b21pY01vZGUgYXRvbWljTW9k
ZSwgdHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgYXRv
bWljTW9kZSwgV29yZFR5cGU+OjpmaWx0ZXIoY29uc3QgQml0bWFwJiBvdGhlcikKK3RlbXBsYXRl
PHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSB2b2lkIEJpdG1h
cDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZpbHRlcihjb25zdCBCaXRtYXAmIG90aGVyKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkKICAgICAgICAgYml0c1tpXSAm
PSBvdGhlci5iaXRzW2ldOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgQml0bWFw
QXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSB2b2lkIEJp
dG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29uc3QgQml0
bWFwJiBvdGhlcikKK3RlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlw
ZT4KK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmV4Y2x1ZGUoY29u
c3QgQml0bWFwJiBvdGhlcikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyAr
K2kpCiAgICAgICAgIGJpdHNbaV0gJj0gfm90aGVyLmJpdHNbaV07CiB9CiAKLXRlbXBsYXRlPHNp
emVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdv
cmRUeXBlPgordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLWlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBh
dG9taWNNb2RlLCBXb3JkVHlwZT46OmZvckVhY2hTZXRCaXQoY29uc3QgRnVuYyYgZnVuYykgY29u
c3QKK2lubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46OmZvckVhY2hTZXRC
aXQoY29uc3QgRnVuYyYgZnVuYykgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdvcmRzOyArK2kpIHsKICAgICAgICAgV29yZFR5cGUgd29yZCA9IGJpdHNbaV07CkBAIC0yODYs
OCArMjcwLDI2IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2QKICAg
ICB9CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBiaXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0
b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBlPgotaW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNp
emUsIGF0b21pY01vZGUsIFdvcmRUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVy
KSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdvcmRUeXBlPgor
aW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6bWVyZ2VBbmRDbGVhcihC
aXRtYXAmIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkg
eworICAgICAgICBiaXRzW2ldIHw9IG90aGVyLmJpdHNbaV07CisgICAgICAgIG90aGVyLmJpdHNb
aV0gPSAwOworICAgIH0KK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1l
IFdvcmRUeXBlPgoraW5saW5lIHZvaWQgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRUeXBlPjo6c2V0
QW5kQ2xlYXIoQml0bWFwJiBvdGhlcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdv
cmRzOyArK2kpIHsKKyAgICAgICAgYml0c1tpXSA9IG90aGVyLmJpdHNbaV07CisgICAgICAgIG90
aGVyLmJpdHNbaV0gPSAwOworICAgIH0KK30KKwordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUs
IHR5cGVuYW1lIFdvcmRUeXBlPgoraW5saW5lIGJvb2wgQml0bWFwPGJpdG1hcFNpemUsIFdvcmRU
eXBlPjo6b3BlcmF0b3I9PShjb25zdCBCaXRtYXAmIG90aGVyKSBjb25zdAogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgd29yZHM7ICsraSkgewogICAgICAgICBpZiAoYml0c1tpXSAhPSBv
dGhlci5iaXRzW2ldKQpAQCAtMjk2LDE0ICsyOTgsMTQgQEAgaW5saW5lIGJvb2wgQml0bWFwPGJp
dG1hcFNpemUsIGF0b21pY01vZAogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxzaXpl
X3QgYml0bWFwU2l6ZSwgQml0bWFwQXRvbWljTW9kZSBhdG9taWNNb2RlLCB0eXBlbmFtZSBXb3Jk
VHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKK3RlbXBsYXRlPHNpemVf
dCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KK2lubGluZSBib29sIEJpdG1hcDxiaXRt
YXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QK
IHsKICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBi
aXRtYXBTaXplLCBCaXRtYXBBdG9taWNNb2RlIGF0b21pY01vZGUsIHR5cGVuYW1lIFdvcmRUeXBl
PgotaW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBhdG9taWNNb2RlLCBXb3JkVHlw
ZT46Omhhc2goKSBjb25zdAordGVtcGxhdGU8c2l6ZV90IGJpdG1hcFNpemUsIHR5cGVuYW1lIFdv
cmRUeXBlPgoraW5saW5lIHVuc2lnbmVkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Omhh
c2goKSBjb25zdAogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB3b3JkczsgKytpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>